Linux

crontab 重啟服務

  • February 17, 2012

我在 AWS EC2 微實例上執行 Web 伺服器。該實例有大約 630MB 的 RAM。隨著時間的推移,我有幾個 httpd 程序和很少的可用 RAM。當我重新啟動 httpd 服務時,我最終釋放了大約 350MB 的 RAM。

我想過使用 root 下的 cron 作業每 12 小時自動執行一次。我的腳本包含程式碼為

service httpd restart
service mysqld restart
ps aux
free -m

這是我第一次嘗試 cron 腳本。

我收到一封電子郵件,其中包含 and 的預期輸出ps auxfree -m但是

./scriptName.sh: line 1: service: command not found
./scriptName.sh: line 2: service: command not found

對於重新啟動命令。

該腳本確實以root身份執行。恐怕使用sudo可能會導致腳本掛起。輸出的相關行ps-

root     14664  0.0  0.2 142200  1720 ?        S    22:41   0:00 CROND
root     14665  0.0  0.2   9296  1236 ?        Ss   22:41   0:00 /bin/sh -c ./scriptName.sh
smmsp    14667  0.0  0.6  76020  4244 ?        R    22:41   0:00 /usr/sbin/sendmail -FCronDaemon -i -odi -oem -oi -t -f root
root     14669  0.0  0.1  11244  1008 ?        R    22:41   0:00 ps aux

成功重啟服務的正確做法是什麼?

這樣做甚至是可取的嗎?

的輸出free -m

            total       used       free     shared    buffers     cached
Mem:           596        573         23          0          8         71
-/+ buffers/cache:        493        103
Swap:            0          0          0

主要問題是 cron 的執行環境中沒有正確$PATH定義,因此您需要使用完整路徑才能service使其正常工作。

您可以使用命令找出此路徑,該命令which service應列印出類似 /usr/sbin/service.

第二個問題:我不會這樣做,只是盲目地在生產系統上重新啟動服務絕不是一個好主意。您是否有實際的記憶體/性能問題,或者可能是您的 RAM 只是被緩衝區等用完了(請參閱http://www.linuxatemyram.com/)?

請將free -m幾個小時後的輸出添加到您的問題中。

引用自:https://serverfault.com/questions/361051