查看Linux用户帐户的ulimit值

查看当前用户的所有软限制和硬限制:

ulimit -Sa ## 查看软限制
ulimit -Ha ## 查看硬限制

输出示例:

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

查看用户tom的所有硬ulimit值

使用root权限或者sudo命令运行命令:

su - tom -c "ulimit -Ha"
su - tom --shell /bin/bash -c "ulimit -Ha"

sudo -u tom bash -c "ulimit -Ha"
sudo -u tom sh -c "ulimit -Ha"

查看用户tom的所有软限制值

su - tom -c "ulimit -Sa"
su - tom --shell /bin/bash -c "ulimit -Sa"

sudo -u tom bash -c "ulimit -Sa"
sudo -u tom sh -c "ulimit -Sa"

为进程用户查找ulimit -a

有时候进程是在后台运行的,而且其运行的用户是无法进行shell访问的。
如果使用上面的方法,查看limit值,就会报错:

$ su - apache -c "ulimit -Sa"

This account is currently not available.

所以我们需要使用下面的方法:

查看进程的limit值

语法为:

cat /proc/PID/limits

首先找到nginx的PID(进程ID)

ps aux | grep nginx

然后查看进程的limit值

cat /proc/3331/limits

输出示例:

Limit                    Soft Limit          Hard Limit          Units     
Max cpu time              unlimited            unlimited            seconds   
Max file size             unlimited            unlimited            bytes     
Max data size             unlimited            unlimited            bytes     
Max stack size            8388608              unlimited            bytes     
Max core file size        0                    unlimited            bytes     
Max resident set          unlimited            unlimited            bytes     
Max processes             unlimited            unlimited            processes 
Max open files            1024                 1048576              files     
Max locked memory         65536                65536                bytes     
Max address space         unlimited            unlimited            bytes     
Max file locks            unlimited            unlimited            locks     
Max pending signals       385944               385944               signals   
Max msgqueue size         819200               819200               bytes     
Max nice priority         0                    0                    
Max realtime priority     0                    0                    
Max realtime timeout      unlimited            unlimited            us

一般比较关心的是apache进程的最大进程数和打开文件数。

ulimit选项说明

选项说明
-S使用软资源限制
-H使用硬资源限制
-a报告所有当前限制
-b套接字缓冲区大小
-c创建的核心文件的最大大小
-d进程数据段的最大大小
-e最大调度优先级(nice)
-fshell及其子级写入文件的最大大小
-i待处理信号的最大数量
-k为此进程分配的最大队列数
-l进程可能锁定到内存的最大大小
-m最大居民集大小
-n打开文件描述符的最大数量
-p管道缓冲区大小
-qPOSIX消息队列中的最大字节数
-r最大实时调度优先级
-s最大堆栈大小
-t以秒为单位的最大cpu时间
-u最大用户进程数
-v虚拟内存的大小
-x文件锁的最大数量
-P最大伪终端数
-T最大线程数
在Linux上如何查看用户的ulimit值?

在Linux中,如何查看为用户设置的ulimit值?
如何设置Linux 进程的ulimit值?

ulimit值通常在/etc/security/limits.conf文件或systemd中定义的。
Linux ulimit命令用于设置或显示用户进程资源限制。
Linux 资源限制分为2部分:

  • 软限制所有用户都可以更改软限制,最高可以设置为硬限制。将-S选项传递给ulimit。
  • 硬限制仅允许root用户更改资源硬限制。将-H选项传递给ulimit。
日期:2020-03-23 08:03:52 来源:oir作者:oir