[英]Cron script to restart apache server doesn't work
這是我第一次使用 cron。 如果可用 memory 的數量小於 500 mb,我想在我的服務器中重新啟動 apacher。 為此,我編寫了以下腳本:
restart_if_memory_full.sh(在 /var/www/myapp/ 中)
#!/bin/bash
mem=$(free -m | awk '/Mem:/{print $4}')
(( mem <= 500 )) && (sudo service apache2 restart)
然后我通過運行( sudo chmod +x restart_if_memory_full.sh
)使它可執行,並通過( sudo crontab -e
)將以下行添加到 cron (注意我沒有按照推薦使用 .sh 擴展名)
* * * * * /var/www/myapp/restart_if_memory_full
現在,我通過( grep CRON /var/log/syslog
)檢查 output 並看到:
Nov 11 11:13:01 mardy2 CRON[31963]: (root) CMD (/var/www/myapp/restart_if_memory_full)
Nov 11 11:13:01 mardy2 CRON[31962]: (CRON) info (No MTA installed, discarding output)
但是,當我通過 htop 檢查 memory 使用情況時,它並沒有減少,因此我意識到 apache 服務器沒有重新啟動。 那么,我怎樣才能使這個腳本可以運行呢?
您基本上自己回答了您的問題:
注意我沒有按照推薦使用 .sh 擴展名
這不僅僅是一個擴展名,它是文件名的一部分。 因此,如果您的腳本保存為/var/www/myapp/restart_if_memory_full.sh
您不能只刪除后綴。 Cron 不會找到那個文件,也不會做任何事情。 Cron 甚至想通過電子郵件通知你,但沒有安裝郵件服務器來發送警報:
(CRON) info (No MTA installed, discarding output)
。
所以使用腳本的完整路徑和名稱:
* * * * * /var/www/myapp/restart_if_memory_full.sh
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.