簡體   English   中英

用於重啟 apache 服務器的 Cron 腳本不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM