ulimit命令
ulimit 命令用于查看和设置 shell 运行时的资源限制。它可以控制各种资源,如文件打开数量、堆栈大小、CPU 时间等。ulimit 命令通常用于限制 shell 启动的进程的资源使用量,以防止系统资源被耗尽。ulimit命令的主要作用是提高系统的性能和稳定性。通过合理地设置资源限制,可以防止因过度使用系统资源而导致系统崩溃或性能下降。例如,通过设置最大文件大小的限制,可以避免同时打开过多的文件导致系统崩溃;通过设置最大虚拟内存的限制,可以避免进程占用过多的内存导致系统变慢。
ulimit命令语法:
ulimit [-aHS] [-c <core file>][-d <data size>][-f <file size>][-m <memory size>][-n <number of files>][-p <buffer size>][-s <stack size>][-t <time>][-u <user process>]
下面是 ulimit 命令的常见选项和参数:
- -a:显示所有资源限制的当前值。
- -H:显示硬限制,即操作系统允许的最大限制值。
- -S:显示软限制,即当前进程允许的最大限制值。
- -c :设置核心转储文件的大小限制。
- -d :设置数据段的大小限制。
- -f :设置文件大小的限制。
- -m :设置最大内存大小的限制。
- -n :设置最大打开文件数的限制。
- -p :设置管道缓冲区大小的限制。
- -s :设置堆栈大小的限制。
- -t
- -u :设置最大用户进程数量。
显示所有资源限制
ulimit -a
这是 ulimit -a 命令的输出,显示了当前shell的资源限制情况。下面是各项资源限制的含义:
- real-time non-blocking time (microseconds, -R) unlimited:实时非阻塞时间(微秒),无限制。
- core file size (blocks, -c) 0:核心文件大小(块),不生成核心转储文件。
- data seg size (kbytes, -d) unlimited:数据段大小(KB),无限制。
- scheduling priority (-e) 0:调度优先级,默认为0。
- file size (blocks, -f) unlimited:文件大小(块),无限制。
- pending signals (-i) 62488:待处理信号数量,62488个。
- max locked memory (kbytes, -l) 2010064:最大锁定内存大小(KB),2010064KB。
- max memory size (kbytes, -m) unlimited:最大内存大小(KB),无限制。
- open files (-n) 1024:打开文件数量,1024个。
- pipe size (512 bytes, -p) 8:管道大小(字节),512字节。
- POSIX message queues (bytes, -q) 819200:POSIX消息队列大小(字节),819200字节。
- real-time priority (-r) 0:实时优先级,默认为0。
- stack size (kbytes, -s) 8192:堆栈大小(KB),8192KB。
- cpu time (seconds, -t) unlimited:CPU时间(秒),无限制。
- max user processes (-u) 62488:最大用户进程数量,62488个。
- virtual memory (kbytes, -v) unlimited:虚拟内存大小(KB),无限制。
- file locks (-x) unlimited:文件锁数量,无限制。
查看并修改相应限制
查看最大打开文件数量:
ulimit -n
修改最大打开文件数量:
ulimit -n 10240
查看最大用户进程数量:
ulimit -u
修改最大用户进程数量数量:
ulimit -u 62222
注:ulimit 命令设置的资源限制通常只会影响当前的 shell 及其子进程,不会影响其他 shell 实例或系统级别的进程。每个 shell 实例都可以有自己的资源限制设置,这些设置在 shell 关闭时会被清除。