使用ulimit命令控制系统资源
在此教程中,我们将了解Linux中的ulimit命令。
我们将如何使用它来控制系统资源分配。
Linux中的ulimit是什么?
ulimit是一个内置shell命令,旨在显示,分配和限制资源。
任何系统都必须调节这些类型的控制。
这种类型的控制可以在全局,组和用户级别强制执行。
除了确保对任务的顺利加工之外,它还可以防止不需要的过程能够吞噬内存等系统资源和CPU功率。
ulimit链接到安全配置文件。
确切位置可能会有所不同,但通常是"/etc/security/limits.conf"的类似类似的。
Ulimit允许我们快速编辑该配置。
软与硬限制
作为用户,我们实际上可以调整ulimit设置。
如果用户可以调整它,我们可能会想知道为什么甚至设置限制。
这是柔软和硬限制进入游戏的地方。
因此,从管理员角度来看,我们可能更喜欢用户将悬停在某个值周围。
这将是你的软限制(让我们说25)。
然后,我们可以建立该用户无法超过的硬限制(50)。
用户将被授权将其限制从25增加到50。
在Linux中使用ulimit
这是ulimit命令的语法:
ulimit <options>
显示任何用户的所有限制
我们可以以这种方式显示指定用户的所有类型的限制:
ulimit -a user_name
"-A"标志将为特定用户名显示所有选项及其配置。
如果省略user_name,它会显示限制。
让我向我们展示为我设置的限制:
Hyman@theitroad:~$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
将这些与上面的特定标志相结合更有用。
因此,如果要检查最大用户进程数的硬限制,则会键入:
Hyman@theitroad:~$ulimit -Hu 31503
改变限制(暂时)
现在,让我们将该值更改为31500以进行演示目的并再次检查硬限制。
Hyman@theitroad:~$ulimit -u 31500 Hyman@theitroad:~$ulimit -Hu 31500
值得注意的是,PROFILIEGE允许我们暂时写入并影响我们当前的shell的任何更改。
要确认此问题,我退出了我的shell并创建了一个新终端并获得了原始默认值。
Hyman@theitroad:~$ulimit -Hu 31503
下一节展示了如何使更改永久变化。
对ulimit进行永久性变化
正如我在文章开始的那样,ulimit由/etc/security/limits.conf管理。
如果要对任何用户的ulimits进行任何永久更改,则必须将安全文件更改为root。
编辑时,我们需要包含这四个元素:
<domain> <type> <item> <value>
以下是我添加到文件的文本,以便为用户克里斯图普人(即我自己的帐户)的进程数的困难限制:
igi hard nproc 2000
请记住,除非我们充分意识到潜在后果,否则最好的做法是不启用root帐户。
我已经在虚拟机上完成了这一点,所以你不必自己这样做。
Hyman@theitroad:~$su Password: Hyman@theitroad:/home/igi# nano /etc/security/limits.conf Hyman@theitroad:/home/igi# exit exit Hyman@theitroad:~$ulimit -u 20000
正如我们所看到的,"Hyman"的限制已更改为20000。
如何知道用于编辑/etc/security/limits.conf文件的用于编辑什么关键字?
嗯,这是一个包含可能的项目关键字及其描述的表:
核心关键字 | 说明 |
---|---|
core | 限制核心文件大小(KB) |
data | 最大数据大小(KB) |
fsize | 最大文件大小(KB) |
memlock | 最大锁定内存地址空间(KB) |
nofile | 打开的文件描述符的最大数目 |
rss | 最大驻留集大小(KB) |
stack | 最大堆栈大小(KB) |
cpu | 最大cpu时间(分钟) |
nproc | 最大进程数 |
as | 地址空间限制(KB) |
maxlogins | 此用户的最大登录次数 |
maxsyslogins | 系统上的最大登录数 |
priority | 运行用户进程的优先级 |
locks | 用户可以持有的最大文件锁数 |
sigpending | 最大挂起信号数 |
msgqueue | –POSIX消息队列使用的最大内存(字节) |
nice | 允许提升到值的最大nice优先级:[-20,19] |
rtprio | 最大实时优先级 |
chroot | 将根目录更改为目录(特定于Debian) |
|限制类型|描述|
| --- - | --- |
|hard|硬限制|
|soft|软限制|
| - |硬度和软限制|
为组修改ulimit
更改组策略与我们在上一节中所看到的内容非常相似,但我们将在组名称之前包含一个@
符号。
以下是我设置组学生的最大登录数的示例是通过编辑/etc/security/limits.conf文件来实现群体学生的最大登录数为4:
@student - maxlogins 4