Linux查看进程的资源限制信息的常见方法

 更新时间:2025年06月10日 09:27:28   作者:唐青枫  
这篇文章主要介绍了Linux中通过`cat /proc/$pid/limits`查看进程资源限制的方法,包括软硬限制、资源类型(如文件数、内存、CPU时间)及修改方式(ulimit/prlimit/limits.conf),用于诊断资源不足问题并优化系统配置,需要的朋友可以参考下

简介

Linux 上的 cat /proc/$pid/limits 命令提供有关特定进程的资源限制的信息,其中 $pid 是相关进程的进程 ID (pid)。该文件是 `/proc 文件系统的一部分,该文件系统是一个虚拟文件系统,提供有关进程和系统资源的信息。

基本用法

cat /proc/1234/limits

# 其中 1234 是目标进程的 PID。
  • $pid:目标进程的进程 ID(PID)。可以通过 ps 命令查找,例如 ps aux | grep <进程名>
  • 输出:显示指定进程的软限制(soft limit)、硬限制(hard limit)以及限制单位。

输出示例:

Limit                     Soft Limit           Hard Limit           Units
Max cpu time               unlimited            unlimited             seconds
Max file size              unlimited            unlimited             bytes
Max data size              unlimited            unlimited             bytes
Max stack size             8388608              8388608               bytes
Max core file size        0                    unlimited             bytes
Max resident set          unlimited            unlimited             bytes
Max processes             6348                 6348                  processes
Max open files            1024                 1024                  files
Max locked memory         65536                65536                 bytes
Max address space         unlimited            unlimited             bytes
Max file locks            unlimited            unlimited             locks
Max pending signals       6348                 6348                  signals
Max msgqueue size         819200               819200                bytes
Max nice priority         20                   20                    priority
Max realtime priority     99                   99                    priority
Max realtime timeout      unlimited            unlimited             us

关键字段解释

  • Max cpu time:该进程可以消耗无限量的 CPU 时间(没有上限)
  • Max file size:该进程可以创建任意大小的文件
  • Max data size:数据段(存储变量和数组)不受限制
  • Max stack size:堆栈大小限制为 8MB(8388608 字节),堆栈存储函数调用数据
  • Max open files:该进程最多可以同时打开 1024 个文件
  • Max processes:该进程最多可以产生 6348 个子进程

修改限制

  • ulimit:用于调整当前 shell 会话的限制
  • prlimit:用于对已经运行的进程设置限制
  • /etc/security/limits.conf:用于设置用户和组的默认资源限制

资源限制

这些是应用于进程的各种限制和约束,以控制其可以使用的资源,例如内存、CPU 和文件描述符。

此文件中列出的常见资源包括:

  • Limit:资源的实际限制
  • Current:该进程当前对该资源的使用情况
  • Soft Limit:当前应用于进程的限制,可以由进程进行调整(在硬限制范围内)
  • Hard Limit:不可超过的最大限制,它由系统管理员设置或采用默认设置
  • Units:衡量限制的单位(例如字节、KB 等)

常见的限制类型

  • Max process limit:用户可以创建的最大进程数。它限制了用户可以生成的进程数量
  • Max open files:进程可以拥有的最大文件描述符数量。这会影响进程可以同时打开的文件、套接字等的数量
  • Max locked memory:可以锁定到 RAM 中的最大内存量,防止其被换出
  • Max address space:进程可以分配的最大虚拟地址空间量,其中包括内存、堆和堆栈
  • Max CPU time:进程可使用的最大 CPU 时间。以秒为单位
  • Max file locks:进程可以拥有的文件锁的最大数量
  • Max number of threads:进程可以创建的最大线程数
  • Max user time:进程在用户空间中花费的最长时间(以秒为单位)(即不包括内核时间)
  • Max virtual memory:进程可以分配的虚拟内存总量,通常控制进程内存使用的上限
  • Max file size:进程创建文件的最大大小
  • Max data size:进程数据段的最大大小(包括堆和数据)
  • Max stack size:进程堆栈的最大大小
  • Max core file size:核心转储文件(core dump)的最大大小
  • Max resident set:驻留内存(RSS,物理内存)的最大大小
  • Max pending signals:进程可排队的最大信号数
  • Max msgqueue sizePOSIX 消息队列的最大大小
  • Max realtime priority:实时调度优先级的最大值
  • Max realtime timeout:实时任务的最大超时时间(微秒)

软限制与硬限制

  • 软限制:这是当前为进程设置的限制,进程可以更改它,管理员也可以使用 ulimit(用于 shell)或 prlimit(用于正在运行的进程)等命令更改它
  • 硬限制:这是除非超级用户 (root) 更改,否则无法超过的最大限制,硬限制由内核强制执行,它是软限制的上限

常见用法

检查进程资源限制

用于诊断进程是否因资源限制(如文件描述符不足)而失败:

cat /proc/$(pidof bash)/limits

查看当前 bash 进程的限制

查找文件描述符限制

检查进程的最大文件描述符数:

cat /proc/1234/limits | grep "Max open files"

输出示例:

Max open files            1024                 1048576              files

结合 ulimit 调整限制

ulimit 命令可修改当前 shell 的软限制(需要硬限制允许)。例如,增加文件描述符限制

ulimit -n 2048
cat /proc/$$/limits | grep "Max open files"

监控系统限制

检查所有进程的限制模式

for pid in /proc/[0-9]*; do echo "PID: $(basename $pid)"; cat $pid/limits; done

诊断文件描述符不足

假设某个服务(PID 1234)报错 Too many open files

cat /proc/1234/limits | grep "Max open files"
lsof -p 1234 | wc -l

如果打开的文件数接近软限制,临时增加限制:

prlimit --pid 1234 --nofile=2048:1048576

或修改服务配置文件(如 systemd 的 LimitNOFILE

检查核心转储

确保进程可以生成核心转储:

cat /proc/1234/limits | grep "Max core file size"

如果软限制为 0,启用核心转储:

ulimit -c unlimited

相关配置文件

/proc/$pid/limits 的值通常来自以下来源:

  • /etc/security/limits.conf:定义用户或组的默认资源限制
# 格式:<domain> <type> <item> <value>
* soft nofile 1024
* hard nofile 1048576

* 表示所有用户,nofile 对应 Max open files

  • /etc/security/limits.d/:包含额外的限制配置文件
  • 系统默认值:由内核参数或系统配置(如 /proc/sys/) 决定
  • ulimit 命令:动态修改当前 shell 或进程的软限制
  • systemd 配置:服务进程的限制可在 systemd 单元文件中的[Service] 快设置(例如 LimitNOFILE=2048

以上就是Linux查看进程的资源限制信息的常见方法的详细内容,更多关于Linux查看资源限制信息的资料请关注脚本之家其它相关文章!

相关文章

  • 详解如何在Linux系统中更改文件和目录的权限

    详解如何在Linux系统中更改文件和目录的权限

    在Linux系统中,文件和目录权限是安全性和访问控制的关键组成部分,正确设置文件和目录的权限可以确保只有授权的用户能够读取、写入或执行这些文件和目录,本文将详细介绍如何在Linux系统中更改文件和目录的权限,需要的朋友可以参考下
    2023-12-12
  • 浅析Linux root设置初始值的方法

    浅析Linux root设置初始值的方法

    ubuntu默认不允许使用root登录,因此初始root账户是不能使用的,需要在普通账户下利用sudo权限修改root密码。这篇文章主要介绍了Linux root设置初始值的方法,需要的朋友可以参考下
    2019-11-11
  • 详解linux grep命令

    详解linux grep命令

    本篇文章主要介绍了linux grep命令,现在分享给大家,也给大家做个参考。正在学习的同学可以了解一下。
    2016-11-11
  • Vmvare虚拟机给ubuntu根目录分区介绍

    Vmvare虚拟机给ubuntu根目录分区介绍

    大家好,本篇文章主要讲的是Vmvare虚拟机给ubuntu根目录分区介绍,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2021-12-12
  • Linux安装MongoDB启动及常见问题解决

    Linux安装MongoDB启动及常见问题解决

    这篇文章主要介绍了Linux安装MongoDB启动及问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • 在Linux系统中高效查找文件所在位置的方法

    在Linux系统中高效查找文件所在位置的方法

    Linux操作系统以其强大的功能和灵活性而闻名,其文件系统结构也是其强大功能的一部分,在Linux中,文件和目录以树状结构组织,这使得查找特定文件或目录变得至关重要,本文将介绍几种在Linux中查找文件所在位置的方法,从而提高工作效率,需要的朋友可以参考下
    2024-11-11
  • Linux编程之ICMP洪水攻击

    Linux编程之ICMP洪水攻击

    这篇文章主要为大家详细介绍了Linux编程之ICMP洪水攻击的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • CentOS 7中Nginx日志定时拆分实现过程详解

    CentOS 7中Nginx日志定时拆分实现过程详解

    这篇文章主要介绍了CentOS 7中Nginx日志定时拆分实现过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-06-06
  • linux中sed命令的使用与注意小结

    linux中sed命令的使用与注意小结

    sed本身也是一个管道命令,可以分析standard input的,sed可以将数据进行替换、删除、新增、选取特定行等。下面这篇文章主要介绍了linux中sed命令的用法和注意事项,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-02-02
  • 在CentOS 7.2上安装SuPHP的详细方法

    在CentOS 7.2上安装SuPHP的详细方法

    这篇文章主要介绍了在CentOS 7.2上安装SuPHP的详细方法,本教程介绍从源代码安装CentOS 7.2上的SuPHP,因为没有可用于CentOS 7.2的SuPHP软件包,需要的朋友可以参考下
    2020-02-02

最新评论