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

问题描述 投票:-1回答:1

这是我第一次使用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服务器没有重新启动。因此,如何使该脚本可运行?

linux apache cron
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.