|
|
遇到一台服务器,无法通过特定用户ssh登录
测试发现可以通过root登录
su - 用户 提示资源不够。
解决过程:
ps -u 用户名 查看该用户下有哪些进程
ps -u 用户名 | wc -l 统计 用户下一共有多少行输出,间接得到进程数量
su - 用户名
ulimit -a 查看用户下业务进程限制
open files (-n) 1024 # ✅重点:单进程最大打开文件句柄数
pipe size (512 bytes, -p) 8POSIX message queues (bytes, -q) 819200real-time priority (-r) 0stack size (kbytes, -s) 8192cpu time (seconds, -t) unlimited
max user processes (-u) 4096 # ✅重点:该用户最大允许进程/线程数
如果想直观的得出结果: ulimit -u 只打印 max user processes,即单个用户最大允许进程 + 线程总数。
发现 该用户最大允许进程数是4096, 而当前该用户下进程已经达到了4096,所以该用户无法再ssh登录了。
解决办法:强制杀死 该用户下全部进程 (需要确认该用户下业务进程可停止)
两种写法:
1) kill -9 $(ps -u d5000 -o pid=)
2) ps -u d5000 -o pid= | xargs kill -9
其中 ps -u d5000 -o pid= 的意思就是 列出该用户的所有进程,-o pid 只输出pid列,最终得到的是 PID 列表, 然后把这个列表交给 kill -9
|
|