zoukankan      html  css  js  c++  java
  • ulimit

    date:20140527
    auth:Jin整理修改
    参考:
    http://blog.csdn.net/kumu_linux/article/details/8301760
    http://blog.csdn.net/wanghai__/article/details/6332540
    一、介绍
    ulimit 用于限制 shell 启动进程所占用的资源,支持以下各种类型的限制:
    所创建的内核文件的大小、
    进程数据块的大小、
    Shell 进程创建文件的大小、
    内存锁住的大小、
    常驻内存集的大小、
    打开文件描述符的数量、
    分配堆栈的最大大小、
    CPU 时间、
    单个用户的最大线程数、
    Shell 进程所能使用的最大虚拟内存。
    同时,它支持硬资源和软资源的限制。
    选项 [options] 含义 例子
    -H 设置硬资源限制,一旦设置不能增加。 ulimit – Hs 64;限制硬资源,线程栈大小为 64K。
    -S 设置软资源限制,设置后可以增加,但是不能超过硬资源设置。 ulimit – Sn 32;限制软资源,32 个文件描述符。
    -a 显示当前所有的 limit 信息。 ulimit – a;显示当前所有的 limit 信息。
    -c 最大的 core 文件的大小, 以 blocks 为单位。 ulimit – c unlimited; 对生成的 core 文件的大小不进行限制。
    -d 进程最大的数据段的大小,以 Kbytes 为单位。 ulimit -d unlimited;对进程的数据段大小不进行限制。
    -f 进程可以创建文件的最大值,以 blocks 为单位。 ulimit – f 2048;限制进程可以创建的最大文件大小为 2048 blocks。
    -l 最大可加锁内存大小,以 Kbytes 为单位。 ulimit – l 32;限制最大可加锁内存大小为 32 Kbytes。
    -m 最大内存大小,以 Kbytes 为单位。 ulimit – m unlimited;对最大内存不进行限制。
    -n 可以打开最大文件描述符的数量。 ulimit – n 128;限制最大可以使用 128 个文件描述符。
    -p 管道缓冲区的大小,以 Kbytes 为单位。 ulimit – p 512;限制管道缓冲区的大小为 512 Kbytes。
    -s 线程栈大小,以 Kbytes 为单位。 ulimit – s 512;限制线程栈的大小为 512 Kbytes。
    -t 最大的 CPU 占用时间,以秒为单位。 ulimit – t unlimited;对最大的 CPU 占用时间不进行限制。
    -u 用户最大可用的进程数。 ulimit – u 64;限制用户最多可以使用 64 个进程。
    -v 进程最大可用的虚拟内存,以 Kbytes 为单位。 ulimit – v 200000;限制最大可用的虚拟内存为 200000 Kbytes。

    作为临时限制,ulimit 可以作用于通过使用其命令登录的shell会话,在会话终止时便结束限制,并不影响于其他shell会话。
    而对于长期的固定限制,ulimit 命令语句又可以被添加到由登录shell读取的文件中,作用于特定的shell用户。

    二.使用
    我们可以通过以下几种方式来使用ulimit:
    1.在用户的启动脚本中
    如果用户使用的是 bash,就可以在用户的目录下的 .bashrc 文件中,加入 ulimit – u 64,来限制用户最多可以使用 64 个进程。此外,可以在与 .bashrc 功能相当的启动脚本中加入ulimt。
    2.在应用程序的启动脚本中
    如果用户要对某个应用程序myapp进行限制,可以写一个简单的脚本 startmyapp。
    #vim startmyapp.sh
    #!/bin/bah
    # Source function library.
    . /etc/rc.d/init.d/functions
    ulimit -SHn 65535
    httpsqs -d -p 1218 -x /data/httpsqs
    以后只要通过脚 startmyapp来启动应用程序,就可以限制应用程序httpsqs可以打开最大文件描述符的数量为65535
    3.直接在控制台输入
    % ulimit – p 256
    限制管道的缓冲区为 256K。


    三、针对某个具体用户的资源加以限制
    方法是通过修改系统的 /etc/security/limits配置文件。
    该文件不仅能限制指定用户的资源使用,还能限制指定组的资源使用。该文件的每一行都是对限定的一个描述,格式如下:
    <domain> <type> <item> <value>

    #<item> can be one of the following:
    # - core - limits the core file size (KB)
    # - data - max data size (KB)
    # - fsize - maximum filesize (KB)
    # - memlock - max locked-in-memory address space (KB)
    # - nofile - max number of open files
    # - rss - max resident set size (KB)
    # - stack - max stack size (KB)
    # - cpu - max CPU time (MIN)
    # - nproc - max number of processes
    # - as - address space limit (KB)
    # - maxlogins - max number of logins for this user
    # - maxsyslogins - max number of logins on the system
    # - priority - the priority to run user process with
    # - locks - max number of file locks the user can hold
    # - sigpending - max number of pending signals
    # - msgqueue - max memory used by POSIX message queues (bytes)
    # - nice - max nice priority allowed to raise to values: [-20, 19]
    # - rtprio - max realtime priority
    常用
    # - nofile - max number of open files
    # - cpu - max CPU time (MIN)
    # - nproc - max number of processes


    domain 表示用户或者组的名字,还可以使用 * 作为通配符。Type 可以有两个值,soft 和 hard。Item 则表示需要限定的资源,可以有很多候选值,如 stack,cpu,nofile 等等,分别表示最大的堆栈大小,占用的 cpu 时间,以及打开的文件数。通过添加对应的一行描述,则可以产生相应的限制。例如:
    * hard noflle 100
    该行配置语句限定了任意用户所能创建的最大文件数是 100。

    oracle的修改
    oracle soft nproc 2047
    oracle hard nproc 16384
    oracle soft nofile 1024
    oracle hard nofile 65536
    oracle soft stack 10240

    注意:RHEL6下引入了配置文件/etc/security/limits.d/90-nproc.conf 专门针对nproc资源的(max number of processes)
    测试下来90-nproc.conf没有配置的话limits.conf生效,如果连个文件都对同一用户的nproc资源限制。90-nproc.conf的生效

    现在已经可以对进程和用户分别做资源限制了,看似已经足够了,其实不然。很多应用需要对整个系统的资源使用做一个总的限制,这时候我们需要修改/proc下的配置文件。
    /proc 目录下包含了很多系统当前状态的参数,例如 /proc/sys/kernel/pid_max,/proc/sys/net/ipv4/ip_local_port_range 等等,从文件的名字大致可以猜出所限制的资源种类。

  • 相关阅读:
    Kinect 开发 —— 硬件设备解剖
    Kinect 开发 —— 引言
    (转)OpenCV 基本知识框架
    OpenCV —— 摄像机模型与标定
    OpenCV —— 跟踪与运动
    OpenCV —— 图像局部与分割(二)
    OpenCV —— 图像局部与部分分割(一)
    OpenCV —— 轮廓
    OpenCV —— 直方图与匹配
    OpenCV —— 图像变换
  • 原文地址:https://www.cnblogs.com/diege/p/3755403.html
Copyright © 2011-2022 走看看