普通用户执行ls命令报错:
-bash: fork: retry: 没有子进程
su的时候报错:
su:failed to execute /bin/bash Resource temporarily unavailable
网上查看说是线程数用完了, 一般修改/etc/security/limits.d/20-nproc.conf 加大用户的最大线程数,然后重新登录后通过 ulimit -u命令查询最大线程。
修改加大后,一会又不行了,是要找到占用线程的程序才行。
网上有说ps -ef|grep sshd后把不需要的进程都杀掉。不想这么干,就想看看是谁占了线程:
#打印系统所有进程及其线程
pstree -p
pstree -p |wc -l
#找到占用线程较多的进程号后,查看总线程数
ls /proc/{pid}/task | wc -l
杀掉该进程后系统恢复正常。
参考: https://blog.youkuaiyun.com/weixin_67470255/article/details/125071734