Linux
crontab 重啟服務
我在 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 aux
,free -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
幾個小時後的輸出添加到您的問題中。