0

0

Linux如何限制用户的资源使用?ulimit配置详解

P粉602998670

P粉602998670

发布时间:2025-06-27 17:39:01

|

993人浏览过

|

来源于php中文网

原创

ulimit 是 linux 中用于限制用户进程资源使用的核心命令和配置工具。它分为软限制(当前生效,用户可调整)和硬限制(管理员设定,不可超越)。通过 ulimit -a 可查看所有限制,常用选项包括 -n(文件数)、-u(进程数)等。临时修改直接使用 ulimit 命令,如 ulimit -n 2048;永久设置需编辑 /etc/security/limits.conf 文件,并确保 pam 配置加载 pam\_limits.so 模块。注意事项包括:不同登录方式可能影响配置加载、容器环境需单独指定限制、root 用户默认可能不受限、以及某些服务需重启以应用新限制。

Linux如何限制用户的资源使用?ulimit配置详解

在Linux系统中,限制用户的资源使用是一个常见的需求,尤其是在多用户或者共享服务器环境中。ulimit 是一个非常实用的命令和配置工具,可以用来控制用户进程对系统资源的使用上限,比如内存、CPU时间、打开文件数等。

Linux如何限制用户的资源使用?ulimit配置详解

什么是 ulimit?

ulimit 是 Linux shell 内置的一个命令,用于查看或设置当前 shell 会话中运行进程的资源限制。这些限制分为两种类型:

Linux如何限制用户的资源使用?ulimit配置详解
  • 软限制(soft limit):当前生效的限制值,用户可以在不超过硬限制的前提下自行调整。
  • 硬限制(hard limit):由管理员设定的最大限制值,普通用户不能超过这个值。

你可以通过 ulimit -a 查看当前所有的资源限制。


如何临时修改资源限制?

如果你只是想在当前会话中临时修改某些限制,可以直接使用 ulimit 命令。例如:

Linux如何限制用户的资源使用?ulimit配置详解
ulimit -n 2048   # 设置最大打开文件数为2048
ulimit -u 1024   # 设置最大进程数为1024
注意:这种方式只在当前 shell 会话中有效,重启后失效。

一些常用选项说明如下:

  • -n:最大打开文件描述符数量
  • -u:最大用户进程数
  • -s:堆栈大小
  • -c:core文件最大大小(0表示不生成core dump)
  • -d:数据段大小

如果你不确定某个参数的含义,可以用 ulimit -S 看软限制,ulimit -H 看硬限制。


如何永久设置 ulimit?

要让限制在每次登录时都生效,需要修改系统配置文件。主要有两个地方可以配置:

  1. /etc/security/limits.conf
  2. /etc/pam.d/common-session(或其他PAM相关文件)

修改 limits.conf

这个文件是 ulimit 永久配置的核心文件。格式如下:

   

示例:

Sylius开源电子商务平台
Sylius开源电子商务平台

Sylius开源电子商务平台是一个开源的 PHP 电子商务网站框架,基于 Symfony 和 Doctrine 构建,为用户量身定制解决方案。可管理任意复杂的产品和分类,每个产品可以设置不同的税率,支持多种配送方法,集成 Omnipay 在线支付。功能特点:前后端分离Sylius 带有一个强大的 REST API,可以自定义并与您选择的前端或您的微服务架构很好地配合使用。如果您是 Symfony

下载
user1    soft    nofile    2048
user1    hard    nofile    4096
@group1  soft    nproc     1024
*        soft    core      0
  • domain 可以是用户名、组名(前面加@),也可以用 * 表示所有用户。
  • type 是 soft 或 hard。
  • item 是资源项,如 nofile(文件数)、nproc(进程数)等。
  • value 是具体的数值。

配合 PAM 使用

有些系统还需要确保 /etc/pam.d/common-session 中有以下行:

session required pam_limits.so

否则即使你设置了 limits.conf,也不会生效。


常见问题与注意事项

  1. 不同登录方式可能影响 ulimit 生效

    • 某些图形界面登录或 ssh 登录方式可能不会加载 limits.conf,需要检查 PAM 配置是否启用 pam_limits.so。
  2. 容器环境中的 ulimit 限制

    • 如果你在 Docker 或 Kubernetes 中运行服务,宿主机的 ulimit 不一定会影响容器内部。你需要在容器启动时显式指定资源限制。
  3. root 用户默认不受限?

    • 默认情况下,root 用户可能不受某些限制的影响,但可以通过配置强制对其也进行限制。
  4. 某些应用需要手动重载 ulimit

    • 比如 Nginx、MySQL 等服务在启动时会继承当时的 ulimit 设置。如果之后你修改了配置,必须重启服务才能生效。

总结一下

ulimit 是 Linux 中限制用户资源使用的标准手段之一,适用于大多数场景。临时修改用 ulimit 命令即可,长期生效则需要编辑 /etc/security/limits.conf 并配合 PAM 模块。

基本上就这些,别看配置简单,稍不注意就会出问题,尤其是生产环境中,一定要测试确认后再上线。

相关专题

更多
mysql修改数据表名
mysql修改数据表名

MySQL修改数据表:1、首先查看数据库中所有的表,代码为:‘SHOW TABLES;’;2、修改表名,代码为:‘ALTER TABLE 旧表名 RENAME [TO] 新表名;’。php中文网还提供MySQL的相关下载、相关课程等内容,供大家免费下载使用。

652

2023.06.20

MySQL创建存储过程
MySQL创建存储过程

存储程序可以分为存储过程和函数,MySQL中创建存储过程和函数使用的语句分别为CREATE PROCEDURE和CREATE FUNCTION。使用CALL语句调用存储过程智能用输出变量返回值。函数可以从语句外调用(通过引用函数名),也能返回标量值。存储过程也可以调用其他存储过程。php中文网还提供MySQL创建存储过程的相关下载、相关课程等内容,供大家免费下载使用。

244

2023.06.21

mongodb和mysql的区别
mongodb和mysql的区别

mongodb和mysql的区别:1、数据模型;2、查询语言;3、扩展性和性能;4、可靠性。本专题为大家提供mongodb和mysql的区别的相关的文章、下载、课程内容,供大家免费下载体验。

280

2023.07.18

mysql密码忘了怎么查看
mysql密码忘了怎么查看

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS 应用软件之一。那么mysql密码忘了怎么办呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

513

2023.07.19

mysql创建数据库
mysql创建数据库

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS 应用软件之一。那么mysql怎么创建数据库呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

250

2023.07.25

mysql默认事务隔离级别
mysql默认事务隔离级别

MySQL是一种广泛使用的关系型数据库管理系统,它支持事务处理。事务是一组数据库操作,它们作为一个逻辑单元被一起执行。为了保证事务的一致性和隔离性,MySQL提供了不同的事务隔离级别。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

384

2023.08.08

sqlserver和mysql区别
sqlserver和mysql区别

SQL Server和MySQL是两种广泛使用的关系型数据库管理系统。它们具有相似的功能和用途,但在某些方面存在一些显著的区别。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

522

2023.08.11

mysql忘记密码
mysql忘记密码

MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。那么忘记mysql密码我们该怎么解决呢?php中文网给大家带来了相关的教程以及其他关于mysql的文章,欢迎大家前来学习阅读。

594

2023.08.14

桌面文件位置介绍
桌面文件位置介绍

本专题整合了桌面文件相关教程,阅读专题下面的文章了解更多内容。

0

2025.12.30

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
MySQL 教程
MySQL 教程

共48课时 | 1.5万人学习

MySQL 初学入门(mosh老师)
MySQL 初学入门(mosh老师)

共3课时 | 0.3万人学习

简单聊聊mysql8与网络通信
简单聊聊mysql8与网络通信

共1课时 | 777人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号