网站搜索

如何在 Linux 中设置用户运行进程的限制


Linux 的优点之一是你几乎可以控制它的一切。这使系统管理员可以很好地控制他的系统并更好地利用系统资源。

虽然有些人可能从未考虑过这样做,但重要的是要知道在 Linux 中您可以限制单个用户可以使用多少资源以及多长时间。

另请阅读:如何增加 Linux 中打开文件的数量限制

在这个简短的主题中,我们将向您展示如何限制用户启动的进程数以及如何检查当前限制并修改它们。

在我们进一步讨论之前,我们需要指出两件事:

  1. 您需要系统的 root 访问权限才能修改用户限制
  2. 如果您打算修改这些限制,您必须非常小心

要设置用户限制,我们需要编辑以下文件:


/etc/security/limits.conf

该文件用于应用pam_module创建的ulimit

该文件具有以下语法:

<domain> <type> <item> <value>

在这里我们将停下来讨论每个选项:

  • – 这包括用户名、组、guid 范围等
  • 类型 – 软限制和硬限制
  • 项目 – 将受到限制的项目 – 核心大小、文件大小、nproc 等
  • – 这是给定限制的值

限制的一个很好的样本是:

@student          hard           nproc                20

上面的行对 “student” 组设置了最多 20 个进程的硬性限制。

如果您想查看某个进程的限制,您可以简单地“cat”限制文件,如下所示:


cat /proc/PID/limits

其中PID是实际的进程ID,您可以使用ps命令找到进程ID。有关更详细的说明,请阅读我们的文章:查找正在运行的 Linux 进程并设置每个用户级别的进程限制

这是一个例子:


cat /proc/2497/limits
样本输出

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              unlimited            bytes     
Max core file size        0                    unlimited            bytes     
Max resident set          unlimited            unlimited            bytes     
Max processes             32042                32042                processes 
Max open files            1024                 4096                 files     
Max locked memory         65536                65536                bytes     
Max address space         unlimited            unlimited            bytes     
Max file locks            unlimited            unlimited            locks     
Max pending signals       32042                32042                signals   
Max msgqueue size         819200               819200               bytes     
Max nice priority         0                    0                    
Max realtime priority     0                    0                    
Max realtime timeout      unlimited            unlimited            us   

所有的线条几乎都是不言自明的。但是,如果您想查找更多可以在 limits.conf 文件中输入的设置,您可以查看此处提供的手册。

如果您有任何问题或意见,请随时在下面的评论部分提交。