在linux怎么限制一个进程运行内存大小

在运行一个命令的时候可以限制其消耗内存大小,我找到一个命令ulimit,但是他如果发现进程超过最大内存的话,会kill掉。这并不是我想要的,我希望只是限制使用最大内存,但不能kill掉。

阅读 12.3k
1 个回答

ulimit 是解决这个问题的正道。

如果内存超了还不 kill,那么应该怎么处置这个程序呢?任其继续使用内存么?那还限制总内存干什么呢~

如果命令是自己写的,并且只要外部通知一下就能够回收内存,那么可以考虑让这个命令能够响应某个特殊消息,比如 SIGUSR1,收到后就回收内存。然后写一个 monitor 程序,通过 /proc/$PID 来不断看内存使用,一旦超了就给它发消息。不过看起来题主的要求是任意命令,这个方法就明显不工作了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题