我想在我的進程中使用腳本./start.sh
將其稱爲「./real_process
」,並且讓它在超過8G的內存時自動終止real_process。有沒有辦法限制啓動時進程消耗的內存
我不希望對「所有進程」進行此限制。就是那個特別的一個。我想在啓動時做到這一點。
我想在我的進程中使用腳本./start.sh
將其稱爲「./real_process
」,並且讓它在超過8G的內存時自動終止real_process。有沒有辦法限制啓動時進程消耗的內存
我不希望對「所有進程」進行此限制。就是那個特別的一個。我想在啓動時做到這一點。
您可以使用的ulimit在腳本的開始:
ulimit -m 8000000
,或者是因爲某些原因無法使用,叉你real_process到後臺,並使用你的腳本的其餘部分要定期檢查,如果它是內存使用已超過8G,並終止。
while true; do
# check memory usage of process
# kill process if too high
sleep 60
done
您可以設置它以不斷獲取/ proc/$ pid/smap中的內存使用情況。一旦超過了8GB的最大值,殺死該進程。
使用ps -e| grep [your_process_name]
獲取pid。通過$value='/proc/$pid/smap'
獲取內存使用情況並將$value
與您需要的任何值進行比較,以確定它是否小於8GB。使用Kill
命令來終止進程。把它扔在一個循環中。
閱讀有關[ulimit內部命令](http://ss64.com/bash/ulimit.html)的bash手冊頁 – Jdamian
@Jdamian我不想對「所有進程」進行此限制。就是那個特別的一個。我想在啓動時做到這一點。 – CodeNoob
你在哪裏閱讀過'ulimit'命令適用於**所有進程**?仔細閱讀Jeremy Gurr的回答。 – Jdamian