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 沙盒。
输入时间/日期参数并输出未来运行时间的列表。