【发布时间】:2020-03-07 01:49:19
【问题描述】:
这是我第一次使用 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 服务器没有重新启动。那么,我怎样才能让这个脚本可以运行呢?
【问题讨论】: