Linux中如何使用ulimit命令【控制系统资源】Linux中如何使用ulimit命令【控制系统资源】Linux中如何使用ulimit命令【控制系统资源】Linux中如何使用ulimit命令【控制系统资源】
  • 业务
  • 目标
  • 支持
  • 关于
  • 联系我们
  • 登录
✕

Linux中如何使用ulimit命令【控制系统资源】

发表 admin at 2025年2月28日
类别
未分类
标签

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 命令的快速入门指南。

如果您有任何意见或问题,请在下面留下。如果您对希望涵盖的主题有任何建议,也请随时留下。

©2015-2025 Norria support@norria.com