在本初学者教程中,您将了解 Linux 中的 ulimit 命令。 您将了解如何使用它来控制系统资源分配。
Linux 中的 ulimit 是什么?
Ulimit 是一个内置的 shell 命令,旨在显示、分配和限制资源。 任何系统都必须规范这些类型的控制。
这种类型的控制可以在全局、组和用户级别强制执行。 除了确保任务的顺利处理外,它还可以防止不需要的进程占用内存和 CPU 等系统资源。
超限 链接到安全配置文件。 您的确切位置可能会有所不同,但通常类似于 /etc/security/limits.conf
. Ulimit 允许我们快速编辑该配置。
软限制与硬限制
作为用户,您实际上可以调整 ulimit 设置。
您可能想知道如果用户可以调整它,为什么还要设置限制。 这就是软限制和硬限制发挥作用的地方。
所以从 admin 从角度来看,您可能希望您的用户将鼠标悬停在某个值附近。 这将是您的软限制(比如说 25)。
然后,您可以建立该用户不能超过的硬限制 (50)。 用户将被授权将其限制从 25 增加到 50。
在 Linux 中使用 ulimit
以下是 ulimit 命令的语法:
ulimit <options>
显示任何用户的所有限制
您可以通过这种方式显示指定用户的所有限制:
ulimit -a user_name
这 -a
flag 将显示您的特定用户名的所有选项及其配置。
如果您省略 user_name,它会为您显示限制。 让我向您展示默认情况下为我设置的限制:
[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) 31503
max locked memory (kbytes, -l) 65536
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) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 31503
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
当然,您的默认值可能与我的不同。 此视图显示描述、分配的标志(可用于更改限制)和配置。
显示硬限制和软限制
也可以使用标志查看这些各自的限制中的任何一个。
要显示软限制,请使用选项 -S:
ulimit -S
要显示硬限制,请使用选项 -H:
ulimit -H
将这些与上面的特定标志结合起来更有用。 因此,如果要检查最大用户进程数的硬限制,请键入:
[email protected]:~$ ulimit -Hu
31503
更改限制(临时)
现在,让我们将该值更改为 31500 以进行演示,并再次检查硬限制。
[email protected]:~$ ulimit -u 31500
[email protected]:~$ ulimit -Hu
31500
值得注意的是,您的权限允许您进行的任何更改都只会暂时写入并影响您当前的 shell。
为了确认这一点,我退出了我的 shell 并创建了一个新终端并获得了原始默认值。
[email protected]:~$ ulimit -Hu
31503
下一节将展示如何使更改永久生效。
对 ulimit 进行永久性更改
正如我在文章开头提到的,ulimit 由 /etc/security/limits.conf 管理。 如果要对任何用户的 ulimit 进行任何永久更改,则必须以 root 身份更改安全文件。
编辑时,您需要包括以下四个元素:
<domain> <type> <item> <value>
这是我附加到文件中的文本,用于为用户 christoper(即我自己的帐户)设置进程数的硬限制:
christopher hard nproc 2000
请记住,除非您完全了解潜在后果,否则最好不要启用 root 帐户。 我已经在虚拟机上完成了这个,所以你不必自己做。
[email protected]:~$ su
Password:
[email protected]:/home/christopher# nano /etc/security/limits.conf
[email protected]:/home/christopher# exit
exit
[email protected]:~$ ulimit -u
20000
如您所见,“christopher”的限制已更改为 20000。
您怎么知道使用什么关键字来编辑 /etc/security/limits.conf 文件? 好吧,这是一个包含可能的项目关键字及其描述的表格:
项目关键字 | 描述 |
---|---|
核 | 限制核心文件大小 (KB) |
数据 | 最大数据大小 (KB) |
尺寸 | 最大文件大小 (KB) |
内存锁 | 最大锁定内存地址空间 (KB) |
无文件 | 打开文件描述符的最大数量 |
RSS | 最大驻留集大小 (KB) |
堆 | 最大堆栈大小 (KB) |
中央处理器 | 最大 CPU 时间 (MIN) |
nproc | 最大进程数 |
作为 | 地址空间限制 (KB) |
最大登录 | 此用户的最大登录次数 |
最大系统登录 | 系统上的最大登录数 |
优先事项 | 运行用户进程的优先级 |
锁 | 用户可以持有的最大文件锁数 |
正在等待 | 挂起信号的最大数量 |
消息队列 | – POSIX 消息队列使用的最大内存(字节) |
好的 | 允许提升到值的最大优先级: [-20, 19] |
rtprio | 最大实时优先级 |
chroot | 将根目录更改为目录(特定于 Debian) |
限制类型 | 描述 |
---|---|
难的 | 硬限制 |
柔软的 | 软限制 |
– | 硬限制和软限制 |
更改组的 ulimit
更改组策略与您在上一节中看到的非常相似,但您将包括一个 @
组名前的符号。
这是一个 example 通过编辑 /etc/security/limits.conf 文件,我将组 student 的最大登录次数设置为 4:
@student - maxlogins 4
结论
我希望你喜欢这篇关于 ulimit Linux 命令的快速入门。
如果您有任何意见或问题,请在下方留言。 如果您对希望看到的主题有任何建议,也请随时留下。