重新启动 Apache 的 Cron 作业

重新启动 Apache 的 Cron 作业

Ubuntu Server 12.04。我使用:

sudo crontab -e
* * * * * root /etc/init.d/apache2 restart > /dev/null 2>&1
sudo restart cron

但它不起作用。如何修复它?谷歌上有这么多文档,我需要一个“真正的方法”。

答案1

我假设您在第二条语句之后退出了 cron 选项卡。第三行在 crontab 中不起作用。Cron 应该自行重新加载。

您的 cron 选项卡的问题在于您将其设置为每天每小时每分钟运行等等。这就是 * 的含义,所有选项。

以列格式查看

` m - h  dom mon dow    command

* *   *   *   *       root /etc/init.d/apache2 restart > /dev/null 2>&1

你需要

0  1  * * * root /etc/init.d/apache2 restart > /dev/null 2>&1

这是每天第一个小时的第 0 分钟。

答案2

重启 apache 不是一个好主意,也许你可以重新加载?或者检查 apache 状态,如果 apache 已关闭,则重新启动。

#!/usr/bin/env python
import urllib2
import commands
from subprocess import Popen

ip = '127.0.0.1'
try:
  link = urllib2.urlopen('http://%s' % ip).code
  print link
except urllib2.HTTPError as e:
  print e.code
except urllib2.URLError:
  Popen(['invoke-rc.d','apache2','restart'])

并且 cron 任务将会

*/5 * * * * restart_apache.py

首先,当您想在脚本中重新启动 apache 时,您必须检查配置文件是否有错误。

#!/usr/bin/env python
import re
from subprocess import check_output, call

def is_config_ok():
    if re.findall('OK',check_output('apache2ctl configtest', shell=True)):
        return 1
    else:
        return 0

if __name__ == "__main__":
    if is_config_ok():
        call('invoke-rc.d apache2 restart', shell=True)
    else:
        print "error in config"

答案3

为了熟悉 crontab 定时命令,你可以尝试Cron 沙盒

输入时间/日期参数并输出未来运行时间的列表。

相关内容