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