su: failed to execute /bin/bash: Resource temporarily unavailable
要解决 su: failed to execute /bin/bash: Resource temporarily unavailable 错误,需从用户进程数限制(nproc)或系统资源耗尽角度分析,以下是分步解决方案:
步骤1:检查用户进程数是否达到限制
每个用户能运行的最大进程数由 nproc 限制,若进程数达到上限,会导致无法创建新进程(如切换用户时启动 bash)。
-
统计
oraclellg用户当前进程数:ps -u oraclellg | wc -l -
查看
oraclellg用户的nproc限制(用 root 用户执行):su - oraclellg -c "ulimit -u"或查看限制配置文件(
/etc/security/limits.conf或/etc/security/limits.d/下的文件):cat /etc/security/limits.conf | grep oraclellg cat /etc/security/limits.d/* | grep oraclellg
步骤2:调整用户进程数限制(若达到上限)
若 oraclellg 的进程数接近/达到 nproc 限制,需扩大限制:
-
编辑进程数限制配置文件(以
/etc/security/limits.conf为例):vi /etc/security/limits.conf -
添加/修改
oraclellg的nproc限制(根据需求调整数值,示例为放宽到较大值):oraclellg soft nproc 65535 oraclellg hard nproc 65535soft nproc:软限制(用户可临时超过,但系统会警告)。hard nproc:硬限制(绝对上限,无法超过)。
-
保存文件后,重新登录或切换用户(无需重启系统),验证是否能正常切换:
su - oraclellg
步骤3:排查系统整体资源(可选)
若调整 nproc 后仍报错,需检查系统整体资源(如进程 ID 总数、内存/CPU 耗尽):
-
查看系统最大进程 ID 限制:
cat /proc/sys/kernel/pid_max若当前系统进程数(
ps -ef | wc -l)接近该值,需调整pid_max(需 root 权限,编辑/etc/sysctl.conf后执行sysctl -p)。 -
检查内存/CPU 使用:
用top或free -h查看内存占用,若内存耗尽,需释放内存(如关闭无用进程)。
总结
最常见原因是用户进程数(nproc)达到限制,通过调整 /etc/security/limits.conf 中 oraclellg 的 nproc 限制即可解决。
更多推荐



所有评论(0)