Cron脚本重新启动apache服务器不起作用

时间:2019-11-11 11:15:09

标签: linux apache cron

这是我第一次使用cron。如果可用内存量少于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)的输出,然后看到:

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检查内存使用情况时,它并没有减少,因此我意识到apache服务器没有重新启动。那么,如何使该脚本可运行?

1 个答案:

答案 0 :(得分:1)

您基本上可以自己回答问题:

  

请注意,我没有按照建议使用.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