`

我使用过的Linux命令之ulimit - 在shell进程中限制系统资源

阅读更多

我使用过的Linux命令之ulimit - 在shell进程中限制系统资源

本文链接:http://codingstandards.iteye.com/blog/967718   (转载请注明出处)

用途说明

ulimit是一个shell内建命令,用于控制由shell启动的进程的可用资源(Provides  control  over the resources available to the shell and to processes started by it, on systems that allow such  control.)。对资源的限制分为两种,一种是硬性限制,一种是软性限制。硬性限制一旦设定就不能增加(A hard limit cannot be  increased  once it  is set),而软性限制可以增加到硬性控制为止(a soft limit may be increased up to the value of the hard limit)。Linux系统可以对多种资源的使用进行限制,比如允许创建的文件数、允许打开的文件数、是否允许生成core等。要注意的是,该设置只对当前shell进程的子进程产生作用,并不会影响其他shell进程。

最初接触到这个命令,是在从事C/C++开发时经常会出现段错误、断言错误之类的,但是Linux操作系统中默认是不生成core文件的,所以无法确切的知道问题出现的位置。因此,通常的做法就是修改/etc/profile中的那个ulimit设置,如下所示:

vi +/ulimit /etc/profile 写道
# No core files by default
ulimit -S -c 0 > /dev/null 2>&1

 通常把允许生成的core文件的大小改成100M之类的,比如:

ulimit -S -c 100000000 > /dev/null 2>&1

PS: 由于本人理解的错误,-c的数值单位其实是blocks,一般是1K。具体block size是多少,与具体的文件系统有关,大伙可以参考本文后面列出的参考资料。

 

常用参数

使用示例

示例一 与ulimit有关的帮助信息

[root@node34 root]# type -a ulimit
ulimit is a shell builtin

[root@node34 root]# help ulimit
ulimit: ulimit [-SHacdflmnpstuv] [limit]
    Ulimit provides control over the resources available to processes
    started by the shell, on systems that allow such control.  If an
    option is given, it is interpreted as follows:
   
        -S      use the `soft' resource limit
        -H      use the `hard' resource limit
        -a      all current limits are reported
        -c      the maximum size of core files created
        -d      the maximum size of a process's data segment
        -f      the maximum size of files created by the shell
        -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
        -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
   
    If LIMIT is given, it is the new value of the specified resource;
    the special LIMIT values `soft', `hard', and `unlimited' stand for
    the current soft limit, the current hard limit, and no limit, respectively.
    Otherwise, the current value of the specified resource is printed.
    If no option is given, then -f is assumed.  Values are in 1024-byte
    increments, except for -t, which is in seconds, -p, which is in
    increments of 512 bytes, and -u, which is an unscaled number of
    processes.
[root@node34 root]# cat /etc/security/limits.conf
# /etc/security/limits.conf
#
#Each line describes a limit for a user in the form:
#
#<domain>        <type>  <item>  <value>
#
#Where:
#<domain> can be:
#        - an user name
#        - a group name, with @group syntax
#        - the wildcard *, for default entry
#
#<type> can have the two values:
#        - "soft" for enforcing the soft limits
#        - "hard" for enforcing hard limits
#
#<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
#        - maxlogins - max number of logins for this user
#        - priority - the priority to run user process with
#        - locks - max number of file locks the user can hold
#
#<domain>      <type>  <item>         <value>
#

#*               soft    core            0
#*               hard    rss             10000
#@student        hard    nproc           20
#@faculty        soft    nproc           20
#@faculty        hard    nproc           50
#ftp             hard    nproc           0
#@student        -       maxlogins       4

# End of file
[root@node34 root]#

 

示例二 打印当前的资源限制

[root@node34 root]# ulimit -H -a
core file size        (blocks, -c) unlimited
data seg size         (kbytes, -d) unlimited
file size             (blocks, -f) unlimited
max locked memory     (kbytes, -l) 4
max memory size       (kbytes, -m) unlimited
open files                    (-n) 1024
pipe size          (512 bytes, -p) 8
stack size            (kbytes, -s) unlimited
cpu time             (seconds, -t) unlimited
max user processes            (-u) 2048
virtual memory        (kbytes, -v) unlimited
[root@node34 root]# ulimit -S -a
core file size        (blocks, -c) 0
data seg size         (kbytes, -d) unlimited
file size             (blocks, -f) unlimited
max locked memory     (kbytes, -l) 4
max memory size       (kbytes, -m) unlimited
open files                    (-n) 1024
pipe size          (512 bytes, -p) 8
stack size            (kbytes, -s) 10240
cpu time             (seconds, -t) unlimited
max user processes            (-u) 2048
virtual memory        (kbytes, -v) unlimited
[root@node34 root]#

 

示例三 修改允许打开的文件数

[root@node34 root]# ulimit -n
1024
[root@node34 root]# ulimit -n 4096
[root@node34 root]# ulimit -n
4096
[root@node34 root]#

要永久修改,请参见后面的资料。

 

问题思考

相关资料

【1】developerWorks 中国   通过 ulimit 改善系统性能
http://www.ibm.com/developerworks/cn/linux/l-cn-ulimit/
【2】有意没思的专栏 linux修改ulimit应该注意的
http://blog.csdn.net/noizz/archive/2008/03/13/2177503.aspx
【3】走在路上的你。。。  查看linux blocksize 大小
http://blogold.chinaunix.net/u/11765/showart_235505.html
【4】好好学习,天天向上 解决linux打开文件数1024限制的解决办法
http://www.51testing.com/?uid-13956-action-viewspace-itemid-209988
【5】我家空间  Linux 用户进程可打开文件数 TCP连接数 限制修改
http://www.myhomespace.net/p/2010/11/528

 

返回 我使用过的Linux命令系列总目录

 

0
3
分享到:
评论

相关推荐

    linux_ulimit的使用

    `ulimit` 是一个在 Linux 和其他类 Unix 操作系统中常用的命令行工具,用于设置或显示对当前 shell 进程及其子进程的资源限制。这些限制可以包括最大文件大小、最大核心文件大小、最大数据段大小、最大堆栈大小、...

    管理Linux进程的系统资源.pdf

    例如,在图1中,通过`ulimit -f 20K`命令,当前shell进程被限制创建的最大文件大小为20KB。随后,尝试创建超过这个限制的文件(如`Yes`命令不断写入数据到`Test.txt`),系统会提示文件大小超出限制并终止写入操作。...

    linux服务器如何限制普通用户能使用的最大系统资源.docx

    在Linux服务器管理中,确保系统资源的有效利用和稳定运行至关重要。有时,恶意或者无意的用户行为可能导致系统资源被过度消耗,比如通过创建大量子进程。这种情况可能会使服务器性能下降,甚至瘫痪。针对这一问题,...

    Linux命令详解手册

    - top命令显示当前系统中各个进程的资源占用情况; - useradd、userdel和usermod用于用户管理; - vlock锁定虚拟控制台; - w、who和whoami用于显示当前登录用户信息; - whois用于查询Whois数据库。 2. Linux系统...

    ulimit命令 控制shell程序的资源

    为提高性能,可以根据设备资源情况,设置各linux用户的最大进程数,我们可以用ulimit来显示当前的各种用户进程限制。 ulimit为shell内建命令,可用来控制shell执行程序的资源。 语法格式:ulimit [参数] 常用参数...

    Linux性能调优基本策略.doc

    此外,在 Solaris 系统中,ulimit 命令也可以用来调整用户进程的限制,例如使用 `ulimit -a` 命令可以显示当前的各种用户进程限制,并可以使用 `ulimit -n` 命令来修改每个进程可打开的文件数。 Linux 性能调优基本...

    linux ulimited命令

    `ulimit` 是一个在 Linux 和 Unix 系统中常用的命令行工具,用于控制和限制 shell 的资源使用量。通过 `ulimit`,用户可以对进程进行一系列资源限制,如最大文件大小、最大内存使用量等。这对于优化系统性能、防止...

    linux shell 编程中经常用的linux系统信息 命令

    9. **用户资源限制**: `ulimit -a` - 列出当前用户所能使用的各种系统资源限制,如最大文件大小、打开文件数量等。 10. **已安装的模块(modules)**: `lsmod` - 显示当前Linux内核加载的所有模块。 11. **X Server...

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

    若要增加这个限制,可以使用`ulimit -n &lt;number&gt;`命令,但需要注意,这只会改变当前shell会话的限制,不会持久化。 2. 软限制与硬限制: 用户可打开文件的限制分为软限制和硬限制。软限制是系统允许用户设置的上限...

    关于linux日常使用的shell命令

    在 Linux 操作系统中,Shell 命令是用户与操作系统交互的重要方式之一。掌握常用的 Shell 命令对于提高工作效率、解决实际问题至关重要。本文将详细介绍标题及描述中提及的一些关键知识点。 #### 一、目录与文件...

    3 种方法教你在 Linux 中修改打开文件数量限制.doc

    在Linux系统中,每个进程能够同时打开的文件数量是由系统设定的限制所控制的。文件句柄是操作系统为每一个打开的文件分配的唯一标识,它存储在主内存的一个特定区域,这个区域的大小决定了系统能同时处理多少个文件...

    主要shell内置命令

    Shell是Linux和Unix系统中的一种命令解释器,它允许用户通过命令行接口与操作系统交互。在Shell中,内置命令是直接由Shell执行的,而无需启动新的进程,这使得它们比外部命令更快、更有效率。以下是主要的Shell内置...

    LINUX与UNIX SHELL编程指南LINUX与UNIX SHELL编程指南24

    《LINUX与UNIX SHELL编程指南》第24章主要探讨了SHELL的嵌入式命令,这些命令是直接在shell环境中内置的,而非存在于/bin或/usr/bin等系统目录下。由于它们直接由shell执行,因此执行速度相对较快。本章详细介绍了多...

    linux 操作系统

    这篇博文将主要探讨如何在Linux中限制文件大小,这对于管理和优化系统资源非常有用。在Linux环境中,我们经常会遇到需要控制文件大小的情况,例如为了防止日志文件过大、避免磁盘空间耗尽等问题。 首先,我们需要...

    Linuxcore文件介绍.pdf

    ulimit命令用于控制shell进程及其子进程可以使用的资源。其中,-c选项用于限制Core Dump文件的大小,比如ulimit -c 0表示禁止生成Core Dump文件。-c unlimited则允许无限大小的Core Dump文件生成。 /etc/profile 和...

    linux与unix shell编程指南

    6. **进程管理**:讲解如何在shell中启动、监控和控制进程,包括后台运行(&)、进程ID(PID)、父进程与子进程的关系,以及kill命令的使用。 7. **shell扩展**:介绍高级特性,如数组、brace expansion、process ...

    linux实验二 .docx

    5. ulimit 命令:ulimit 命令用于控制系统资源在 shell 和进程上的分配量,可以管理重度使用和存在性能问题的系统。 6. w 命令:w 命令提供当前登录的用户及其正在执行的进程的信息,显示信息头包含信息,如当前时间...

    Linux 下的一些资源限制.doc

    在Linux操作系统中,资源限制是管理和优化系统性能的关键部分,特别是在多用户和多任务环境中。资源限制可以帮助防止系统崩溃、避免资源耗尽以及确保服务的稳定性。本文将深入探讨Linux下的资源限制,尤其是用户层面...

    Linux命令高阶参考手册,1527页的命令大全

    - **top**/ **htop**:查看系统资源使用情况。 - **ps**:显示进程信息。 4. **文件和目录操作**: - **touch**:创建空文件或更新文件的时间戳。 - **ln**:创建硬链接或符号链接。 - **cat**/ **more**/ **...

Global site tag (gtag.js) - Google Analytics