linux控制进程开启数量,限制Linux用户进程数上限

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

普通用户

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

$ ulimit -u

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

$ ulimit -u 2048

$ ulimit -u

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

linux控制进程开启数量,限制Linux用户进程数上限_第1张图片

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

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

第一个脚本:

#!/bin/bash

# 可以开启的进程数目上限为 512

ulimit -u 512

# 执行其他指令 ...

第二个脚本:

#!/bin/bash

# 可以开启的进程数目上限为 2048

ulimit -u 2048

# 执行比较复杂的指令 ...

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

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

管理员用户

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

#                

@student        hard    nproc          

你可能感兴趣的:(linux控制进程开启数量)