su切换用户时提示:Resource temporarily unavailable

时间:2022-09-22 13:36:04

今天使用WinSCP连接ftp服务器认证失败,感觉着实奇怪,什么都没有动过,之前都是正常的。

使用SecureCRT连接服务器正常,查询ftp服务运行中,使用ftp命令也提示失败,然后用root用户su切换到ftp用户时,一直提示“-bash:fork:Resource temporarily unavailable”,知道是由于资源不足造成的,

[root@cls vsftpd]# su bupdate
bash: fork: retry: Resource temporarily unavailable
bash: fork: retry: Resource temporarily unavailable
bash: fork: retry: Resource temporarily unavailable
bash: fork: retry: Resource temporarily unavailable
^C

1、首先检查磁盘、内存都没问题

[bupdate@cls vsftpd]$ top

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND            
32141 bupdate   20   0 16296 2548 1004 R  2.3  0.1   0:00.61 top                
    1 root      20   0 19272 1576 1312 S  0.0  0.0   0:06.43 init               
    2 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kthreadd           
    3 root      RT   0     0    0    0 S  0.0  0.0   0:01.45 migration/0        
    4 root      20   0     0    0    0 S  0.0  0.0   0:00.12 ksoftirqd/0        
    5 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 migration/0        
    6 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 watchdog/0         
    7 root      RT   0     0    0    0 S  0.0  0.0   0:02.26 migration/1        
    8 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 migration/1        
    9 root      20   0     0    0    0 S  0.0  0.0   0:00.25 ksoftirqd/1        
   10 root      RT   0     0    0    0 S  0.0  0.0   0:27.92 watchdog/1         
   11 root      RT   0     0    0    0 S  0.0  0.0   0:00.92 migration/2        
   12 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 migration/2        
   13 root      20   0     0    0    0 S  0.0  0.0   0:00.01 ksoftirqd/2    


2、通过ulimit -a,得到结果

[plain] view plaincopy
  1. core file size          (blocks, -c) 0  
  2. data seg size           (kbytes, -d) unlimited  
  3. max nice                        (-e) 0  
  4. file size               (blocks, -f) unlimited  
  5. pending signals                 (-i) 71679  
  6. max locked memory       (kbytes, -l) 32  
  7. max memory size         (kbytes, -m) unlimited  
  8. open files                      (-n) 1024  
  9. pipe size            (512 bytes, -p) 8  
  10. POSIX message queues     (bytes, -q) 819200  
  11. max rt priority                 (-r) 0  
  12. stack size              (kbytes, -s) 10240  
  13. cpu time               (seconds, -t) unlimited  
  14. max user processes              (-u) 2047  
  15. virtual memory          (kbytes, -v) unlimited  
  16. file locks                      (-x) unlimited    

 

3、修改/etc/security/limits.conf

[plain] view plaincopy
  1. *              soft    nproc   2047  
  2. *              hard    nproc   16384    


limits.conf的格式如下:


username|@groupname       type        resource          limit

username|@groupname:设置需要被限制的用户名,组名前面加@和用户名区别。也可以用通配符*来做所有用户的限制。

type:有 soft,hard 和 -,soft 指的是当前系统生效的设置值。hard 表明系统中所能设定的最大值。soft 的最大值不能超过hard的值。用 – 就表明同时设置了 soft 和 hard 的值。

resource:
core – 限制内核文件的大小
date – 最大数据大小
fsize – 最大文件大小
memlock – 最大锁定内存地址空间
nofile – 打开文件的最大数目
rss – 最大持久设置大小
stack – 最大栈大小
cpu – 以分钟为单位的最多 CPU 时间
noproc – 进程的最大数目
as – 地址空间限制
maxlogins – 此用户允许登录的最大数目

要使 limits.conf 文件配置生效,必须要确保 pam_limits.so 文件被加入到启动文件中。查看 /etc/pam.d/login 文件中有:
session required /lib/security/pam_limits.so

 

4、或者使用修改/etc/profile文件

ulimit   [-acdfHlmnpsStvw]    [size]

参数详解:

-H 设置硬件资源限制.
-S 设置软件资源限制.
-a 显示当前所有的资源限制.
-c size:设置core文件的最大值.单位:blocks
-d size:设置数据段的最大值.单位:kbytes
-f size:设置创建文件的最大值.单位:blocks
-l size:设置在内存中锁定进程的最大值.单位:kbytes
-m size:设置可以使用的常驻内存的最大值.单位:kbytes
-n size:设置内核可以同时打开的文件描述符的最大值.单位:n
-p size:设置管道缓冲区的最大值.单位:kbytes
-s size:设置堆栈的最大值.单位:kbytes
-t size:设置CPU使用时间的最大上限.单位:seconds
-v size:设置虚拟内存的最大值.单位:kbytes

在/etc/profile文件末尾加上如ulimit    -f    1000,这样每个会话登陆时都会生效。


ps:

永久性改变   解除 Linux 系统的最大进程数和最大文件打开数限制:           vi /etc/security/limits.conf           # 添加如下的行           * soft noproc 11000  #软连接            * hard noproc 11000  #硬连接           * soft nofile 4100             * hard nofile 4100          说明:* 代表针对所有用户,noproc 是代表最大进程数,nofile 是代表最大文件打开数


参考地址:http://blog.****.net/jlds123/article/details/9146865