有没有办法限制进程在启动时消耗的内存

时间:2016-12-15 15:23:30

标签: linux bash command-line

我想在我调用" ./start.sh"的脚本./real_process中包装我的进程,并且当需要超过8G的内存时让linux自动终止real_process。

我不希望这个限制适用于所有流程"。就是那个特别的人。我想在启动时这样做。

2 个答案:

答案 0 :(得分:3)

您可以在脚本开头使用ulimit:

ulimit -m 8000000

或者如果由于某种原因不可用,请将您的real_process分支到后台并使用脚本的其余部分定期检查内存使用是否超过8G,然后终止。

while true; do
    # check memory usage of process
    # kill process if too high
    sleep 60
done

答案 1 :(得分:1)

您可以将其设置为从/ proc / $ pid / smap不断获取内存使用量。一旦超过最大8GB,就可以杀死进程。

使用ps -e| grep [your_process_name]获取pid。使用$value='/proc/$pid/smap'获取内存使用情况,并将$value与您需要确定的值进行比较,以确定它是否小于8GB。使用Kill命令终止进程。把它扔进去。