【问题标题】:Is there a way to limit the memory consumed by a process on startup有没有办法限制启动时进程消耗的内存
【发布时间】:2016-12-15 15:23:30
【问题描述】:

我想将我的进程封装在一个脚本./start.sh 中,它调用“./real_process”,并让 linux 在占用超过 8G 内存时自动终止 real_process。

我不希望对“所有进程”进行此限制。就是那个特别的。我想在启动时这样做。

【问题讨论】:

  • 阅读关于 ulimit internal command 的 bash 手册页
  • @Jdamian 我不希望对“所有进程”进行此限制。就是那个特别的。我想在启动时这样做。
  • 您从哪里了解到ulimit 命令适用于所有进程?仔细阅读 Jeremy Gurr 的回答。

标签: linux bash command-line


【解决方案1】:

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

ulimit -m 8000000

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

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

【讨论】:

    【解决方案2】:

    您可以将其设置为不断从 /proc/$pid/smap 获取内存使用情况。一旦超过了最大 8GB,就终止该进程。

    使用ps -e| grep [your_process_name] 获取 pid。使用$value='/proc/$pid/smap' 获取内存使用情况并将$value 与您需要确定它是否小于8GB 的​​任何值进行比较。使用Kill 命令杀死进程。将其放入循环中。

    【讨论】:

      猜你喜欢
      • 2018-01-28
      • 2020-02-27
      • 1970-01-01
      • 1970-01-01
      • 2021-03-29
      • 2012-10-30
      • 2023-03-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多