Linux系统root无法通过su切换或远程到某个普通用户,报错 su: failed to execute /bin/bash: Resource temporarily unavailable
1、原因:提示资源不足,查看系统内存和磁盘空间使用情况,未发现明细异常,其他账号都可正常切换登录,可判定为超过用户进程最大数目的默认限制;
2、查看用户线程数:lsof -u dcsup|wc -l
3、ulimit为shell内建指令,可用来控制shell执行程序的资源,用法:ulimit -a
参 数:
-a 显示目前资源限制的设定。
-c <core文件上限> 设定core文件的最大值,单位为区块。
-d <数据节区大小> 程序数据节区的最大值,单位为KB。
-f <文件大小> shell所能建立的最大文件,单位为区块。
-H 设定资源的硬性限制,也就是管理员所设下的限制。
-m <内存大小> 指定可使用内存的上限,单位为KB。
-n <文件数目> 指定同一时间最多可开启的文件数。
-p <缓冲区大小> 指定管道缓冲区的大小,单位512字节。
-s <堆叠大小> 指定堆叠的上限,单位为KB。
-S 设定资源的弹性限制。
-t <CPU时间> 指定CPU使用时间的上限,单位为秒。
-u <程序数目> 用户最多可开启的程序数目。
-v <虚拟内存大小> 指定可使用的虚拟内存上限,单位为KB。
3、解决方案:
1)、修改配置文件/etc/security/limits.d/20-nproc.conf (centos) 将 * soft nproc 4096 中的默认值4096改为50000;
2)、如上修改后仍不可用,需修改/etc/security/limits.conf ;(注:此配置文件单独修改不会生效!)