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

标签 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 服务器没有重新启动。那么,如何使该脚本可运行?

最佳答案

您基本上自己回答了您的问题:

Note I did not use .sh extension as recommended

这不仅仅是一个扩展名,它是文件名的一部分。因此,如果您的脚本保存为 /var/www/myapp/restart_if_memory_full.sh 您不能只删除后缀。 Cron 不会找到该文件,也不会执行任何操作。 Cron 甚至想通过电子邮件通知您,但没有安装邮件服务器来发送警报:

(CRON)信息(未安装 MTA,丢弃输出)

因此请使用脚本的完整路径和名称:

* * * * * /var/www/myapp/restart_if_memory_full.sh

关于linux - 重启 apache 服务器的 Cron 脚本不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58800265/

相关文章:

apache - Symfony2 网站不返回 404 错误

c# - Quartz.NET 在随机持续时间后停止触发

linux - Wazuh 管理器未收集 json 日志

linux - OpenMP 没有在一台机器上启动线程,但在另一台运行相同操作系统的机器上工作正常

linux - 如何使用 sed 替换包含斜杠的字符串?

python - 来自 amavisd-new-cronjob sa-sync 的错误

php - 如何使用 shell 运行 php 脚本

c - 使用ftw库进行linux c编译

apache - centos 7 获取最新的 apache 包

apache - 子域的 .htaccess 端口重写