【Linux】一步一步学Linux——ulimit命令(218)
发布日期:2021-06-29 20:45:17 浏览次数:2 分类:技术文章

本文共 3470 字,大约阅读时间需要 11 分钟。

00. 目录

文章目录

01. 命令概述

ulimit命令用来限制系统用户对shell资源的访问。

假设有这样一种情况,当一台 Linux 主机上同时登陆了 10 个人,在系统资源无限制的情况下,这 10 个用户同时打开了 500 个文档,而假设每个文档的大小有 10M,这时系统的内存资源就会受到巨大的挑战。

而实际应用的环境要比这种假设复杂的多,例如在一个嵌入式开发环境中,各方面的资源都是非常紧缺的,对于开启文件描述符的数量,分配堆栈的大 小,CPU 时间,虚拟内存大小,等等,都有非常严格的要求。资源的合理限制和分配,不仅仅是保证系统可用性的必要条件,也与系统上软件运行的性能有着密不可分的联 系。这时,ulimit 可以起到很大的作用,它是一种简单并且有效的实现资源限制的方式。

ulimit 用于限制 shell 启动进程所占用的资源,支持以下各种类型的限制:所创建的内核文件的大小、进程数据块的大小、Shell 进程创建文件的大小、内存锁住的大小、常驻内存集的大小、打开文件描述符的数量、分配堆栈的最大大小、CPU 时间、单个用户的最大线程数、Shell 进程所能使用的最大虚拟内存。同时,它支持硬资源和软资源的限制。

作为临时限制,ulimit 可以作用于通过使用其命令登录的 shell 会话,在会话终止时便结束限制,并不影响于其他 shell 会话。而对于长期的固定限制,ulimit 命令语句又可以被添加到由登录 shell 读取的文件中,作用于特定的 shell 用户。

02. 命令格式

用法:ulimit [-SHacdefilmnpqrstuvx] [限制]

03. 常用选项

选项:      -S        使用 `soft'(软)资源限制      -H        使用 `hard'(硬)资源限制      -a        所有当前限制都被报告      -b        套接字缓存尺寸      -c        创建的核文件的最大尺寸      -d        一个进程的数据区的最大尺寸      -e        最高的调度优先级(`nice')      -f        有 shell 及其子进程可以写的最大文件尺寸      -i        最多的可以挂起的信号数      -l        一个进程可以锁定的最大内存尺寸      -m        最大的内存进驻尺寸      -n        最多的打开的文件描述符个数      -p        管道缓冲区尺寸      -q        POSIX 信息队列的最大字节数      -r        实时调度的最大优先级      -s        最大栈尺寸      -t        最大的CPU时间,以秒为单位      -u        最大用户进程数      -v        虚拟内存尺寸      -x        最大的锁数量

04. 参考示例

4.1 显示系统资源的限制

[deng@localhost ~]$ ulimit -acore file size          (blocks, -c) 0data seg size           (kbytes, -d) unlimitedscheduling priority             (-e) 0file size               (blocks, -f) unlimitedpending signals                 (-i) 7806max locked memory       (kbytes, -l) 64max memory size         (kbytes, -m) unlimitedopen files                      (-n) 1024pipe size            (512 bytes, -p) 8POSIX message queues     (bytes, -q) 819200real-time priority              (-r) 0stack size              (kbytes, -s) 8192cpu time               (seconds, -t) unlimitedmax user processes              (-u) 4096virtual memory          (kbytes, -v) unlimitedfile locks                      (-x) unlimited[deng@localhost ~]$
core file size          (blocks, -c) 0           #core文件的最大值为100 blocks。data seg size           (kbytes, -d) unlimited   #进程的数据段可以任意大。scheduling priority             (-e) 0file size               (blocks, -f) unlimited   #文件可以任意大。pending signals                 (-i) 98304       #最多有98304个待处理的信号。max locked memory       (kbytes, -l) 32          #一个任务锁住的物理内存的最大值为32KB。max memory size         (kbytes, -m) unlimited   #一个任务的常驻物理内存的最大值。open files                      (-n) 1024        #一个任务最多可以同时打开1024的文件。pipe size            (512 bytes, -p) 8           #管道的最大空间为4096字节。POSIX message queues     (bytes, -q) 819200      #POSIX的消息队列的最大值为819200字节。real-time priority              (-r) 0stack size              (kbytes, -s) 10240       #进程的栈的最大值为10240字节。cpu time               (seconds, -t) unlimited   #进程使用的CPU时间。max user processes              (-u) 98304       #当前用户同时打开的进程(包括线程)的最大个数为98304。virtual memory          (kbytes, -v) unlimited   #没有限制进程的最大地址空间。file locks                      (-x) unlimited   #所能锁住的文件的最大个数没有限制。

4.2 设置单一用户程序数目上限

[deng@localhost ~]$ ulimit -u 500[deng@localhost ~]$

4.3 将每个进程可以打开的文件数目加大到4096

[root@localhost ~]# ulimit -n 4096[root@localhost ~]#

4.4 指定可使用的虚拟内存上限为12000KB

[root@localhost ~]# ulimit -v 12000[root@localhost ~]#

4.5 指定CPU使用时间的上限为4s

[root@localhost ~]# ulimit -t 4

4.6 单独显示CPU使用事件上限值

[root@localhost ~]# ulimit  -t4[root@localhost ~]#

4.7 指定CPU使用的时间无限制

[root@localhost ~]# ulimit -t unlimited[root@localhost ~]#

05. 总结

在这里插入图片描述

06. 附录

参考:

转载地址:https://dengjin.blog.csdn.net/article/details/100567478 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:【Linux】一步一步学Linux——readonly命令(219)
下一篇:【Linux】一步一步学Linux——declare命令(217)

发表评论

最新留言

表示我来过!
[***.240.166.169]2024年04月10日 19时12分00秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章