nohup
命令本身并不提供直接限制进程资源使用的功能。它的主要作用是让进程忽略挂起(SIGHUP)信号,从而在用户退出登录后继续运行
ulimit
命令限制资源:在启动进程之前,可以使用 ulimit
命令来限制进程的资源使用。例如,以下命令将限制进程的最大CPU时间为10分钟,最大文件大小为100MB:
ulimit -t 600 -f 100000
./your_command
注意:ulimit
命令设置的资源限制仅对当前shell会话有效。如果你在一个脚本中使用 ulimit
,请确保它在启动进程之前执行。
cgroups
限制资源:cgroups
(control groups)是Linux内核提供的一种资源管理机制,可以用来限制、记录和隔离进程组的资源使用。以下是一个简单的示例,展示如何使用 cgroups
限制进程的CPU和内存使用:
首先,创建一个新的cgroup:
sudo cgcreate -g cpu,memory:/my_cgroup
接下来,设置CPU和内存的使用限制:
echo "100000" | sudo tee /sys/fs/cgroup/cpu/my_cgroup/cpu.cfs_quota_us
echo "104857600" | sudo tee /sys/fs/cgroup/memory/my_cgroup/memory.limit_in_bytes
在这个例子中,我们将CPU使用限制为100,000微秒(即100毫秒),将内存使用限制为100MB。
最后,将你的进程添加到新创建的cgroup中,并启动它:
echo $$ | sudo tee /sys/fs/cgroup/cpu/my_cgroup/tasks
echo $$ | sudo tee /sys/fs/cgroup/memory/my_cgroup/tasks
./your_command
这样,your_command
进程将在 my_cgroup
cgroup的限制下运行。
请注意,cgroups
功能需要内核支持。你可以通过运行 grep cgroup /proc/filesystems
命令来检查你的系统是否支持cgroups。如果输出中包含 cgroup
,则表示你的系统支持这个功能。