Resolution for error: su: failed to execute /bin/bash: Resource temporarily unavailable

Today we met a problem about user cannot su to a general dev account with the error message below:

su: failed to execute /bin/bash: Resource temporarily unavailable

And checked the /var/log/message and /var/log/secure, found there is no resource available for the fork() to generate new processes.

sshd[22208]: error: do_exec_pty: fork: Resource temporarily unavailable

Refer to: http://www.csl.mtu.edu/cs4411.ck/www/NOTES/process/fork/create.html  if you are interested in fork function.

 

Then we checked the max user processes for this user:

[test@hostname ~]$ ulimit -a

core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 127951
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 4096
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited

[Test@lvs-genas-008 log]$ cat /proc/sys/fs/file-nr
1536   0   3247300

Or use lsof to check the opening files || processes.

Opened too files. 

Resolution: we just need to increase the open files param.

系统设置--ulimit
语  法:ulimit [-aHS][-c <core文件上 限>][-d <数据节区大小>][-f <文件大小>][-m <内存大小>][-n <文件数 目>][-p <缓冲区大小>][-s <堆叠大小>][-t <CPU时间>][-u <程序数 目>][-v <虚拟内存大小>]

补充说明:ulimit为shell内建指令,可用来控制shell执行程序的资源。

参  数:
  -a  显示目前资源限制的设定。 
  -c <core文件上限>  设定core文件的最大值,单位为区块。 
  -d <数据节区大小>  程序数据节区的最大值,单位为KB。 
  -f <文件大小>  shell所能建立的最大文件,单位为区块。 
  -H  设定资源的硬性限制,也就是管理员所设下的限制。 
  -m <内存大小>  指定可使用内存的上限,单位为KB。 
  -n <文件数目>  指定同一时间最多可开启的文件数。 
  -p <缓冲区大小>  指定管道缓冲区的大小,单位512字节。 
  -s <堆叠大小>  指定堆叠的上限,单位为KB。 
  -S  设定资源的弹性限制。 
  -t <CPU时间>  指定CPU使用时间的上限,单位为秒。 
  -u <程序数目>  用户最多可开启的程序数目。 
  -v <虚拟内存大小>  指定可使用的虚拟内存上限,单位为KB。
 
We can use ulimit -n number  to modify the opening files number.
 
Another way is:

Append a new line to current user's ./bash_profile

ulimit –n 65535

next time when get into this user's shell, will be good, no need to restart server.

Third way is change below file directly:

/etc/security/limits.conf

@test   soft    nofile           65535

@test          hard    nofile           65535

@test          soft    nproc           65535

@test          hard    nproc           65535

 

After a while the file will sync to server, also no need to reboot server.

转载于:https://www.cnblogs.com/mickwu/p/10150094.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 这个错误信息提示"b'su: failed to execute /bin/bash: permission denied'",意思是b用户在尝试执行命令"su"切换到超级用户时,却被提示权限不足,无法执行/bin/bash命令。可能是b用户没有足够的权限来执行这个命令,需要对其进行相应的权限设置。 ### 回答2: 这个错误提示表示在尝试执行/bin/bash时权限被拒绝。一般来说,这可能是由于以下原因之一导致的: 1. 权限不足:当前用户没有足够的权限来执行/bin/bash。这种情况可能会出现在普通用户尝试以root用户身份执行命令时。 2. 标识符异常:文件系统中/bin/bash的所有权或权限可能已被更改或损坏。这可能是由于系统损坏、病毒或恶意软件感染等原因导致的。 3. 系统问题:系统可能面临其他问题,例如磁盘空间不足、内存问题或文件系统错误等。 为了解决这个问题,可能需要采取以下步骤: 1. 以root用户身份运行命令:如果当前用户没有足够的权限来执行/bin/bash,请以root用户身份尝试运行该命令。这可以通过使用“sudo”命令或以root用户登录系统来完成。 2. 恢复文件系统:如果文件系统中/bin/bash的所有权或权限已更改或受损,请尝试恢复文件系统。这可以通过使用“chown”和“chmod”命令来完成。 3. 执行系统维护:如果存在其他系统问题,请执行系统维护。这可以包括检查磁盘空间、内存使用情况和文件系统问题。可以使用cron来定期执行这些操作。 总之,su: failed to execute /bin/bash: permission denied 错误通常是由权限不足、文件系统损坏或其他系统问题导致的。通过以root用户身份运行命令,恢复文件系统和执行系统维护等措施,可以帮助解决这个问题。 ### 回答3: 这个错误提示意味着当前用户无法访问或执行bash二进制文件。这个问题可能有多种可能的原因,下面是一些可能的解决方法。 1. 检查文件权限:可能是因为bash权限设置不正确,导致当前用户无法执行该文件,可以使用chmod命令更改文件权限。例如,使用"sudo chmod +x /bin/bash"命令将二进制文件的权限更改为可执行。 2. 检查用户权限:当前用户可能没有执行bash的权限。可以使用sudo或su命令以root用户身份执行命令。如果没有root权限,可以请求管理员或超级用户授权。 3. 查找备份副本:如果二进制文件已被破坏或损坏,则可能需要重新安装bash或使用系统的备份副本。可以通过在终端中输入"which bash"或"whereis bash"命令来查找系统中的bash副本。 4. 更新软件包:如果出现这种问题,可能是由于bash版本较旧或软件包配置不正确导致的。可以通过更新软件包或升级bash解决问题。 总之,su: failed to execute /bin/bash: permission denied错误通常是由于文件权限或用户身份不正确引起的。通过检查相应的权限和使用正确的用户身份,可以解决这个问题。如果以上步骤都无法解决问题,则可能需要重新安装操作系统或与系统管理员联系。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值