Linux -bash-4.2#问题和Cannot allocate memory

Posted 一念

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux -bash-4.2#问题和Cannot allocate memory相关的知识,希望对你有一定的参考价值。

1,最近在实际使用linux的过程中中,遇到了一个小问题

在之前,看到根目录“/”下多了一个“~”目录,看到别的服务器都没有,于是忍不住rm -rf ~了。运行了10来秒,感觉不对劲,用时太长了,应该是个小文件才对,赶紧停了。

然后第二天重新连接这个服务器时,发现命令行头[[email protected] ~]变成了-bash-4.2#,一直不明白是什么鬼。今天终于忍不住百度了,原来是"/root"目录下,以".bash”开头的文件都被干掉了。

解决办法:运行下面的命令。就是把"/etc/skel/.bash*"文件复制到"/root/"

cp -r /etc/skel/.bash* /root/

2,压测公司的一个导入接口,压了一晚上,第二天来公司查看结果时。发现不能建立多个SSH连接了,而且,建立第二个SSH连接时,运行一些比较消耗内存的命令都会提示:Cannot allocate memory,我最初以为是linux系统内存不够用了,但是free -m 发现,空间还很充足。然后网上查资料,找到了答案。

原来是服务器linux的最线程数达到了linux的最大线程数。

临时解决办法:

1,查看系统最大进程数:sysctl kernel.pid_max
2,查看系统当前进程数:ps -eLf | wc -l
3,修改最大进程数:修改/proc/sys/kernel/pid_max文件中的最大线程数

4,永久生效:

修改系统配置

 "kernel.pid_max=XXXX" >> /etc/sysctl.conf

根治办法:

找到不关闭线程的程序,让开发改。

 

附上其他可能使用的查询语句:

查看文件流是否关闭
lsof -p [pid] | grep /mnt/sync/ |wc -l
查看tcp是否关闭
netstat -n | awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}‘

 

以上是关于Linux -bash-4.2#问题和Cannot allocate memory的主要内容,如果未能解决你的问题,请参考以下文章

Linux 内核Linux 内核源码结构 ( 下载 Linux 内核源码 | 使用 VSCode 阅读 Linux 内核源码 )

嵌入式linux怎么学

linux查看进程id命令(linux查看进程id)

鸟哥linux摘要-Linux复习必备(Linux命令)

Linux 内核编译 Linux 内核 ② ( 解压内核源码 | 查询当前 Linux 内核版本号 | 进入并查看 linux 内核源码目录 )

Linux如何移动文件夹(Linux如何移动文件)