ulimit详解

ulimit详解,第1张

前段时间去面试滴滴,面试官问了一些linux相关的问题,其中有一个关于ulimit问题,本人当时也没有给出很详细的回答,在此恶补一下。

ulimit简介

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

ulimit命令使用

ulimit的使用方式及作用范围

在用户的启动脚本里

应用程序的启动脚本中

直接控制台输入

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

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

ulimit相关配置文件

ulimit 用于限制 shell 启动进程所占用的资源,支持以下各种类型的限制:所创建的内核文件的大小、进程数据块的大小、Shell 进程创建文件的大小、内存锁住的大小、常驻内存集的大小、打开文件描述符的数量、分配堆栈的最大大小、CPU 时间、单个用户的最大线程数、Shell 进程所能使用的最大虚拟内存。同时,它支持硬资源和软资源的限制。

选项含义例子

ulimit 作为对资源使用限制的一种工作,是有其作用范围的。那么,它限制的对象是单个用户,单个进程,还是整个系统呢?事实上,ulimit 限制的是当前 shell 进程以及其派生的子进程。举例来说,如果用户同时运行了两个 shell 终端进程,只在其中一个环境中执行了 ulimit -s 100,则该 shell 进程里创建文件的大小收到相应的限制,而同时另一个 shell 终端包括其上运行的子程序都不会受其影响

ulimit的主配置文件为/etc/security/limits.conf,配置文件目录为/etc/security/limits.d,后者定义的选项可以覆盖前者。

配置文件的语法

(1) domain 表示用户或者组的名字,还可以使用 * 作为通配符。

(2) Type 可以有两个值,soft 和 hard。

(3) Item 则表示需要限定的资源,可以有很多候选值,如 stack,cpu,nofile 等等,分别表示最大的堆栈大小,占用的 cpu 时间,以及打开的文件数。通过添加对应的一行描述,则可以产生相应的限制。

1)、解除 Linux 系统的最大进程数和最大文件打开数限制:

vi /etc/security/limits.conf

# 添加如下的行

* soft noproc 11000

* hard noproc 11000

* soft nofile 4100

* hard nofile 4100

说明:* 代表针对所有用户

noproc 是代表最大进程数

nofile 是代表最大文件打开数

2)、让 SSH 接受 Login 程式的登入,方便在 ssh 客户端查看 ulimit -a 资源限制:

a、vi /etc/ssh/sshd_config

把 UserLogin 的值改为 yes,并把 # 注释去掉

b、重启 sshd 服务:

/etc/init.d/sshd restart

3)、修改所有 linux 用户的环境变量文件:

vi /etc/profile

ulimit -u 10000

ulimit -n 4096

ulimit -d unlimited

ulimit -m unlimited

ulimit -s unlimited

ulimit -t unlimited

ulimit -v unlimited


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11481302.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存