当前位置 博文首页 > JYRoy:Linux ulimit使用

    JYRoy:Linux ulimit使用

    作者:JYRoy 时间:2021-02-08 20:26

    什么是ulimit?

    ulimit是一个可以设置或者汇报当前用户资源限制的命令。使用ulimit命令需要有管理员权限,它只能在允许使用shell进行控制的系统中使用。也就是说它已经被嵌入到shell当中了。

    基本使用

    ulimit
    

    如输出所示,unlimited,当前的用户有无限的资源可以访问。意味着,当前用户可以消耗当前系统支持的所有资源。

    ulimit -a
    

    -a参数可以展示出详细的参数,即我们可以对什么资源做限制。这里的限制有两种类型:soft & hard。hard资源限制意味着是物理限制;soft资源限制是由用户进行管理的,soft的最大值由hard来限制。

    系统资源被定义在了/etc/security/limits.conf的文件当中,当我们使用ulimit的时候,就是在使用这个文件里定义的值。

    查看其他资源限制

    ulimit -c # 查看core file文件的最大值
    
    ulimit -d # 查看数据段的最大值
    
    ulimit -e # 查看当前用户的最大调度优先级
    
    ulimit -s # 当前用户的最大栈大小
    
    ulimit -u # 当前用户的最大进程数
    
    ulimit -v # 查看虚拟内存的大小
    
    ulimit -b # 查看socket buffer的大小
    
    ulimit -t # 查看每个进程允许运行的时间
    
    ulimit -n # 查看一个进程可以最多有多少文件描述符
    

    其他命令可通过--help查看

    设置资源限制

    我们通过上面的内容了解到了怎么去查看当前系统中的一些资源限制的值。现在就来看一下怎么去修改它们。

    注意:对于hard限制,我们需要有root权限pip

    首先进入limits.conf文件

    vim /etc/security/limits.conf
    

    按照如下的格式编辑文件

    <domain> <type> <item> <value>
    
    1. domain可以是下面的值

      • 一个特定的用户
      • 一个组
      • wildcard(* and %)
    2. type可以是下面的值

    • soft 限制
    • hard 限制
    1. item可以是下面的值

    • core:core文件大小(KB)
    • data:最大数据大小(KB)
    • fsize:最大文件大小(KB)
    • memlock:最大locked-in-memory地址空间(KB)
    • nofile:最大的open files的数目
    • rss:最大的resident set大小(KB)
    • stack:最大栈大小(KB)
    • cpu:最大cpu时间(分钟)
    • nproc:最大进程数
    • as:地址空间的限制(KB)
    • maxlogins:当前用户的最大登陆数目
    • maxsyslogins:当前系统的最大登陆数目
    • priority:跑用户进程的优先级
    • locks:用户可以持有的file locks的数目
    • sigpending:最大的pending signals的数目
    1. value就是具体的整数值

    参考文献

    本文内容翻译自

    1. https://linuxhint.com/linux_ulimit_command/
    bk