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