限制Linux用户进程数上限

Linux系统本身提供了相当丰富的资源管控机制,管理者可以借由这些功能来精准地将系统资源分配给不同的用户,提高系统的运作效率,而一般的用户也可以使用这样的机制来限制进程使用的系统资源。

普通用户

Linux系统上的普通用户若要限制自己可启动的进程数量,可以使用ulimit指令,它是 Linux 中用来限制系统资源的命令,在更改设定之前,我们可以先查询一下目前使用者可开启的进程数量上限:

这个值可以直接使用 ulimit 来更改:

对于普通而言,使用 ulimit 所设定的限制条件有一定的范围,它只对所在的 shell 进程以及该 shell 所衍生的子进程有效,该使用者其他的 shell 进程不受影响,也不会影像系统上其他的进程。

限制Linux用户进程数上限

虽然 ulimit 的限制条件在不同的 shell 中是独立的,但是 ulimit 计算进程数目的方式却是以整个系统中该使用者所有的进程为准,因此不同的进程之间还是会互相影响,以下我们用一个简单的示例来说明。

假设有一个用户有两个不同的脚本,在开头设定脚本可开启的进程数目上限,分开控制两个不同的程式。第一个脚本:

第二个脚本:

假设在准备执行这两个脚本时,该用户在系统上已经开启了 200 个进程,那么这时候若执行第一个脚本,则第一个脚本与其衍生的进程最多只能开启 312 个行程(也就是 512 扣掉原本系统上的 200),同样地若这时候执行第二个脚本,它只能开启 1848 个进程。

请注意 ulimit 是依照整个系统上所有该用户的进程来计算的,假如这两个脚本各需要开启 300 的行程,若同时执行的话就会多出 600 个进程,第一个脚本就会超出其 ulimit 所制定的限制,而只有第二个程式可以正常执行。

管理员用户

Linux系统管理员掌控着整个系统资源、防止系统超载也是很重要的事情,而整个系统的 ulimit 设定都写在 /etc/security/limits.conf 这个文档中,示例:

第一个 domain 栏可以放用户帐号或群组,第二个 type 栏位可以放 soft(软性限制条件,可变更)或 hard(硬性限制条件,不可变更),item 则填入 nproc(代表进程数目),而最后的 value 则是要指定的进程数目上限数值。

查询某进程的资源限制

输出如下:

限制Linux用户进程数上限

查看limits.conf帮助:

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注