在运行一个命令的时候可以限制其消耗内存大小,我找到一个命令ulimit,但是他如果发现进程超过最大内存的话,会kill掉。这并不是我想要的,我希望只是限制使用最大内存,但不能kill掉。
阿神2017-04-17 12:04:40
用 ulimit
是解決這個問題的正道。
如果記憶體超了還不 kill,那該怎麼處置這個程式呢?任其繼續使用內存麼?那還限制總記憶體幹嘛~
如果命令是自己寫的,並且只要外部通知一下就能夠回收內存,那麼可以考慮讓這個命令能夠響應某個特殊消息,比如 SIGUSR1
,收到後就回收內存。然後寫一個 monitor 程序,透過 /proc/$PID
來不斷看記憶體使用,一旦超了就給它發訊息。不過看起來題主的要求是任意命令,這個方法就明顯不工作了。