2016-12-15 60 views
1

我想在我的進程中使用腳本./start.sh將其稱爲「./real_process」,並且讓它在超過8G的內存時自動終止real_process。有沒有辦法限制啓動時進程消耗的內存

我不希望對「所有進程」進行此限制。就是那個特別的一個。我想在啓動時做到這一點。

+0

閱讀有關[ulimit內部命令](http://ss64.com/bash/ulimit.html)的bash手冊頁 – Jdamian

+0

@Jdamian我不想對「所有進程」進行此限制。就是那個特別的一個。我想在啓動時做到這一點。 – CodeNoob

+0

你在哪裏閱讀過'ulimit'命令適用於**所有進程**?仔細閱讀Jeremy Gurr的回答。 – Jdamian

回答

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

您可以設置它以不斷獲取/ proc/$ pid/smap中的內存使用情況。一旦超過了8GB的最大值,殺死該進程。

使用ps -e| grep [your_process_name]獲取pid。通過$value='/proc/$pid/smap'獲取內存使用情況並將$value與您需要的任何值進行比較,以確定它是否小於8GB。使用Kill命令來終止進程。把它扔在一個循環中。

相關問題