ulimit详解

  • 概述

  ulimit 是bash内键命令,它具有一套参数集,用于为由它生成的 shell 进程及其子进程的资源使用设置限制。可以用help ulimit 查询手册。


  • help手册
[[email protected] ~]# help ulimit
ulimit: ulimit [-SHacdefilmnpqrstuvx] [limit]
    Options:
      -S        use the `soft‘ resource limit
      -H        use the `hard‘ resource limit
      -a        all current limits are reported
      -b        the socket buffer size
      -c        the maximum size of core files created
      -d        the maximum size of a process‘s data segment
      -e        the maximum scheduling priority (`nice‘)
      -f        the maximum size of files written by the shell and its children
      -i        the maximum number of pending signals
      -l        the maximum size a process may lock into memory
      -m        the maximum resident set size
      -n        the maximum number of open file descriptors
      -p        the pipe buffer size
      -q        the maximum number of bytes in POSIX message queues
      -r        the maximum real-time scheduling priority
      -s        the maximum stack size
      -t        the maximum amount of cpu time in seconds
      -u        the maximum number of user processes
      -v        the size of virtual memory
      -x        the maximum number of file locks
  • 选项详解

  我们可以通过ulimit -a来查看当前系统所有的限定值。

[[email protected] ~]# 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) 3701
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) 10240
cpu time               (seconds, -t) unlimited
max user processes              (-u) 3701
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited
  • 选项实例
选项 例子
S ulimit -Hs 64 限制硬资源,线程栈大小为64K
H ulimit -Sn 32 限制软资源,32个文件描述符
a ulimit -a 显示当前所有limit信息
c ulimit -c unlimited 对生成的core文件大小不进行限制
d ulimit -d unlimited 对生成的数据段大小不进行限制
f ulimit -f 2048 限制进程可创建的最大文件大小为2048 blocks
l ulimit -l 32 限制最大可加锁内存大小为 kbytes
m ulimit -m unlimited 对最大内存不进行限制
n ulimit -n 128 限制最大可使用128个文件描述符
p ulimit -p 512 限制管道缓冲区的大小为512 kbytes
s ulimit -s 512 限制线程栈的大小为512 kbytes
t ulimit -t unlimited 对最大的cpu占用时间不进行限制
u ulimit -u 64 限制用户最多可以使用64个进程
v ulimit -v 200000 限制最大可用的虚拟内存为 200000 kbytes 

  • ulimit的使用方式
  1. 在用户的启动脚本里

如果用户使用的是 bash,就可以在用户的目录下的 .bashrc 文件中,加入 ulimit – u 64,来限制用户最多可以使用 64 个进程。此外,可以在与 .bashrc 功能相当的启动脚本中加入 ulimt。

2.  应用程序的启动脚本中

编写个简单的启动脚本,startmyapp

#/bin/sh
ulimit -n 512
myapp.sh

以这个startmyapp启动myapp.sh时,myapp.sh这个脚本打开的文件句柄数不超过512个。

3. 直接控制台输入

[[email protected] ~]# ulimit -p 256

限制管道缓冲区为256k


  • ulimit使用范围

ulimit 作为对资源使用限制的一种工作,是有其作用范围的。那么,它限制的对象是单个用户,单个进程,还是整个系统呢?事实上,ulimit 限制的是当前 shell 进程以及其派生的子进程。

举例来说,如果用户同时运行了两个 shell 终端进程,只在其中一个环境中执行了 ulimit – s 100,则该 shell 进程里创建文件的大小收到相应的限制,而同时另一个 shell 终端包括其上运行的子程序都不会受其影响。


  • 相关配置文件

通过修改系统的 /etc/security/limits 配置文件。该文件不仅能限制指定用户的资源使用,还能限制指定组的资源使用。该文件的每一行都是对限定的一个描述,格式如下:

<domain>      <type>  <item>         <value>
#

#*               soft    core            0
*               hard    nofile          100
名称 含义
domain 表示用户或者组的名字,还可以使用 * 作为通配符。
type 可以有两个值,soft 和 hard。
item 则表示需要限定的资源,可以有很多候选值,如 stack,cpu,nofile 等等,分别表示最大的堆栈大小,占用的 cpu 时间,以及打开的文件数。
value 对应相应的值

上述配置语句限定了任意用户所能创建的最大文件数是 100。

注意

很多应用需要对整个系统的资源使用做一个总的限制,这时候我们需要修改 /proc 下的配置文件。

时间: 2024-12-18 07:34:20

ulimit详解的相关文章

php-fpm的配置详解

php5.3自带php-fpm /usr/local/php/etc/php-fpm.confpid = run/php-fpm.pidpid设置,默认在安装目录中的/var/run/php-fpm.pid,建议开启 error_log = log/php-fpm.log错误日志,默认在安装目录中的/var/log/php-fpm.log log_level = notice错误级别. 可用级别为: alert(必须立即处理), error(错误情况), warning(警告情况), notic

php-fpm 启动参数及重要配置详解

约定几个目录 /usr/local/php/sbin/php-fpm /usr/local/php/etc/php-fpm.conf /usr/local/php/etc/php.ini 一,php-fpm的启动参数               (具体问题解决要更具具体目录来) 1 2 3 4 5 6 7 8 9 10 11 12 13 #测试php-fpm配置 /usr/local/php/sbin/php-fpm -t /usr/local/php/sbin/php-fpm -c /usr/

Linux下高并发socket最大连接数所受的各种限制(详解)

1.修改用户进程可打开文件数限制 在Linux平台上,无论编写客户端程序还是服务端程序,在进行高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制(这是因为系统为每个TCP连接都要创建一个socket句柄,每个socket句柄同时也是一个文件句柄).可使用ulimit命令查看系统允许当前用户进程打开的文件数限制: [[email protected] ~]$ ulimit -n1024 这表示当前用户的每个进程最多允许同时打开1024个文件,这1024个文件中

Nginx配置文件(nginx.conf)配置详解

Nginx的配置文件nginx.conf配置详解如下: user nginx nginx ; Nginx用户及组:用户 组.window下不指定 worker_processes 8; 工作进程:数目.根据硬件调整,通常等于CPU数量或者2倍于CPU. error_log  logs/error.log; error_log  logs/error.log  notice; error_log  logs/error.log  info; 错误日志:存放路径. pid logs/nginx.pi

nginx配置参数详解

配置参数详解 user nginx nginx ; Nginx用户及组:用户 组.window下不指定 worker_processes 8; 工作进程:数目.根据硬件调整,通常等于CPU数量或者2倍于CPU. error_log  logs/error.log;  error_log  logs/error.log  notice;  error_log  logs/error.log  info;  错误日志:存放路径. pid logs/nginx.pid; pid(进程标识符):存放路径

[转]php-fpm - 启动参数及重要配置详解

约定几个目录/usr/local/php/sbin/php-fpm/usr/local/php/etc/php-fpm.conf/usr/local/php/etc/php.ini 一,php-fpm的启动参数 #测试php-fpm配置 /usr/local/php/sbin/php-fpm -t /usr/local/php/sbin/php-fpm -c /usr/local/php/etc/php.ini -y /usr/local/php/etc/php-fpm.conf -t #启动p

php配置php-fpm启动参数及配置详解

约定几个目录 /usr/local/php/sbin/php-fpm/usr/local/php/etc/php-fpm.conf/usr/local/php/etc/php.ini一,php-fpm的启动参数 #测试php-fpm配置 /usr/local/php/sbin/php-fpm -t /usr/local/php/sbin/php-fpm -c /usr/local/php/etc/php.ini -y /usr/local/php/etc/php-fpm.conf -t #启动p

LINUX下ORACLE相关的内核参数详解

ORACLE相关的内核参数详解 1.kernel.sem [[email protected] ~]# cat /proc/sys/kernel/sem 250         32000    100         142 [[email protected] ~]#  ipcs -sl ------ Semaphore Limits -------- max number of arrays = 142 max semaphores per array = 250 max semaphor

HAproxy指南之haproxy配置详解(理论篇)

一.haproxy配置文件详解 haproxy配置分为五部分,分别如下: 1 global:  (全局配置主要用于设定义全局参数,属于进程级的配置,通常和操作系统配置有关) 2 default : (配置默认参数,这些参数可以被用到frontend,backend,Listen组件) 在此部分中设置的参数值,默认会自动引用到下面的frontend.backend.listen部分中,因引,某些参数属于公用的配置,只需要在defaults部分添加一次即可.而如果frontend.backend.l