侧边栏壁纸
Linux入门自学网博主等级

每日学一条Linux命令,终成Linux大神

  • 累计撰写 725 篇文章
  • 累计创建 143 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Linux ulimit命令详解:如何查看和限制用户资源(附实例教程和注意事项)

Linux ulimit命令介绍

ulimit是一个内置的Linux shell命令,用于查看或限制单个用户消耗的系统资源量。在多用户和系统性能问题的环境中,限制资源使用是非常有价值的。在本教程中,你将学习如何使用Linux中的ulimit命令,并通过一些实例来演示。

Linux ulimit命令适用的Linux版本

ulimit命令在大多数Linux发行版中都是可用的,但是不同的发行版可能对资源的限制有不同的默认值和最大值。例如,CentOS 7和CentOS 8的最大文件描述符数分别为1024和4096³。如果你想修改这些值,你需要有超级用户权限,并编辑/etc/security/limits.conf文件。这个文件是定义ulimit使用的系统资源分配设置的配置文件。修改这个文件中的值会在系统重启后持久化。例如,如果你想将CentOS 8的最大文件描述符数提高到8192,你可以在文件中添加以下内容:

[linx@bashcommandnotfound.cn ~]$ sudo vim /etc/security/limits.conf
# 添加以下内容
* hard nofile 8192
* soft nofile 8192

Linux ulimit命令的基本语法

ulimit命令的一般语法如下:

ulimit [flags] [limit]

其中,[flags]是用于指定要查看或限制的资源的选项,[limit]是给定资源的新值。如果省略[limit],则表示只查看当前的值。例如,要设置物理内存大小(以千字节为单位),输入:

ulimit -m 15000

Linux ulimit命令的常用选项说明

ulimit命令有很多选项,可以用来查看或限制各种系统资源。下表列出了一些常用的选项:

选项描述
-H给定资源的硬限制。只有root用户可以提高硬限制,任何进程都可以降低它。
-S给定资源的软限制。任何进程都可以改变软限制。
-a列出所有当前资源的限制。
-c核心转储文件的大小,以512字节的块为单位。
-d数据区域的大小,以千字节为单位。
-f文件大小限制,以块为单位。如果使用[limit]参数,则表示设置新的限制。如果不指定[limit],则表示报告文件大小限制。
-n一个进程可以拥有的文件描述符的最大数量。
-s栈的大小,以千字节为单位。
-t指定一个进程的最大运行时间,以秒为单位。
-u指定一个用户可以创建的进程数。
-v进程可用的最大虚拟内存。

注意:如果你的系统不支持某个功能,相应的选项就不会起作用。

Linux ulimit命令的实例

下面是一些使用ulimit命令的实例,展示了如何查看和修改资源的限制。

  • 查看所有资源的限制
[linux@bashcommandnotfound.cn ~]$ 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) 31190
max locked memory       (kbytes, -l) 64
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) 31190
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited
  • 限制用户可以创建的进程数
[linux@bashcommandnotfound.cn ~]$ ulimit -u 10

如果我们试图超过这个限制,我们会遇到一个错误:

bash: fork: retry: Resource temporarily unavailable
  • 限制用户可以创建的文件大小
[linux@bashcommandnotfound.cn ~]$ ulimit -f 100

如果我们现在试图超过这个限制,我们会看到这样的结果:

[linux@bashcommandnotfound.cn ~]$ cat /dev/zero > file
File size limit exceeded (core dumped)
[linux@bashcommandnotfound.cn ~]$ ls -lh file
-rw-rw-r--. 1 linuxconfig linuxconfig 100K Nov 27 10:47 file

Linux ulimit命令的注意事项

  • ulimit命令只对当前的bash shell会话有效。如果你想对所有用户或特定用户进行永久的修改,你需要编辑/etc/security/limits.conf文件,并重新登录或重启系统。
  • ulimit命令只能降低资源的限制,不能提高它。如果你想提高资源的限制,你需要有root权限,并编辑/etc/security/limits.conf文件。
  • ulimit命令的选项和参数可能因系统而异。你可以使用man ulimit或help ulimit来查看你的系统支持的选项和参数。
  • 如果你尝试运行一个不存在的命令,你可能会看到这样的错误:
bash: xxx: command not found

这表示你的系统没有安装这个命令,或者这个命令不在你的PATH环境变量中。你可以使用which命令来查找一个命令的位置,或者使用yum或apt等包管理器来安装一个命令。

0

评论区