使用 ulimit Linux 命令检查和设置用户限制 - Linux 命令
Linux 中的ulimit 命令用于限制单个用户可以消耗的系统资源量。
无论是用户有意为之,还是偶然发生,单个用户都可能耗尽所有可用的系统资源,例如 RAM 内存或磁盘空间。根据 Linux 系统的性质,您可能希望将用户限制为仅使用他们实际需要的内容。
这是一个重要的调整,通常对虚拟专用服务器或其他共享托管情况进行,其中一台服务器可能出租给数十个用户。在本教程中,您将通过示例了解如何在 Linux 中使用 ulimit 命令。请按照下面的说明了解可与此命令一起使用的各种选项。
在本教程中您将学习:
如何在 Linux 上使用 ulimit 命令
常用选项
Fork 炸弹、像 yes
这样的命令以及有缺陷的程序可以在很短的时间内轻松利用大量的系统资源。这将影响系统上所有其他用户的体验,仅仅因为一个人滥用系统资源(无论是有意还是无意)。
ulimit 命令就是这个问题的解决方案。查看下面的一些 ulimit 示例,了解如何限制用户的系统资源消耗。
Linux 中的 ulimit 命令基本示例
你知道吗?
下面显示的所有限制仅适用于当前 bash shell 会话。要对系统范围内的使用进行永久更改,您必须对 /etc/security/limits.conf
进行更改。我们将在后面的部分中展示如何做到这一点。
使用带有
-a
选项的 ulimit 命令来查看系统上所有用户限制的列表,或者仅使用 ulimit 本身来查看快速总结。$ ulimit -a
要限制用户可以生成的最大进程数,请使用
-u
选项。此命令将它们限制为 10 个进程。这将解决诸如叉子炸弹之类的问题。$ ulimit -u 10
如果我们尝试超过此限制,我们会遇到错误:
bash: fork: retry: Resource temporarily unavailable
-f
选项允许我们限制用户可以创建的文件的大小。此命令将限制用户只能使用 100 KB 或更少的文件。$ ulimit -f 100
如果我们现在尝试超过限制,就会发生以下情况。
$ cat /dev/zero > file File size limit exceeded (core dumped) $ ls -lh file -rw-rw-r--. 1 linuxconfig linuxconfig 100K Feb 21 18:27 file
使用ulimit还可以限制进程可用的最大虚拟内存量。使用
-v
选项来完成此操作。$ ulimit -v 1000
要限制用户一次可以打开的文件数量(文件描述符),请使用
-n
选项。$ ulimit -n 10
当超过此限制时,您将收到如下错误:
bash: command: Too many open files
到现在为止,您应该知道可以使用任何选项来制定新的限制类型。使用ulimit --help
或仅使用ulimit -a
查看可以施加的限制类型及其相应的命令选项。
注意
您始终可以使用 man 命令来阅读有关 ulimit 命令及其官方文档的更多信息。单击上一个链接可查看如何打开 Linux 系统上任何命令的手册页。
高级用法
到目前为止,我们一直使用 ulimit 命令施加“软”限制。这些限制是由用户自己创建的,并且可以达到“硬”限制允许的最高值。要创建“硬”限制,我们将编辑 /etc/security/limits.conf
文件。
Linux 高级示例中的 ulimit 命令
使用 root 权限打开
/etc/security/limits.conf
文件。我们将在此示例中使用 nano,但如果您愿意,也可以使用其他文本编辑器。$ sudo nano /etc/security/limits.conf
在此文件的底部,我们将对用户施加一些硬性限制,这些限制是在系统范围内强制执行的。一般语法如下:
[domain] [type]
- [value]
[domain]
可以是用户名、组名或通配符。[type]
可以是“软”或“硬”,具体取决于您想要实施的限制类型。例如,让我们尝试限制“公司”组中的用户可以生成的进程数量。将此行添加到文件中将只允许组中的用户最多生成 10 个进程。
@corporate hard nproc 20
另一个例子,让我们限制用户“linuxconfig”可以使用的文件大小。这会将用户限制为 10 MB。我们必须将数字写为 10000,因为它需要以千字节为单位。
linuxconfig hard fsize 10000
是您想要限制的内容,例如“cpu”或“nproc”(进程数)等。[value]
是您要限制的数量愿意强制执行。所有这些信息都汇总在文件本身中,以防您忘记。
使用 /etc/security/limits.conf 文件中描述的任何限制类型对整个系统上的用户、组或每个人进行限制。
结束语
在本教程中,我们学习了有关 Linux 上的 ulimit 命令的所有信息。 ulimit 命令对于具有多个用户的系统至关重要,以确保每个人都公平地玩游戏并且只使用自己共享的系统资源。
当您需要保留限制时,您可以编辑 ulimit 配置文件(如上所示),以对系统上的用户、组或每个帐户施加系统限制。