这可能是一个令人困惑的话题,因为cron的实现方式不同。另外,还有一些错误破坏了此功能,并且在某些用例中,它根本无法正常工作,特别是在您执行关机/引导还是重新引导时。
虫子
数据点#1
Debian中有一个这样的bug,标题为:cron:@reboot作业未运行。这似乎也使其进入了Ubuntu,我无法直接确认。
数据点#2
在标题为@reboot cronjob not execute的 SO Q&A中,似乎可以确认Ubuntu中的bug的证据。
摘抄
注释#1:...。3)您的crond版本可能不支持@reboot,您使用的是vix的crond吗?...显示crontab -l -u用户的结果
评论#2:...最好将其设置为初始化脚本,而不是依赖cron的特定版本@reboot。
评论#3:... @MarkRoberts删除了重新启动,并将1 * * * *修改为* / 1 * * * *,问题已解决!我应该在哪里发送代表商标?谢谢!
在该问答中被接受的答案也有以下评论:
在我看来,Lubuntu不支持@Reboot Cron语法。
补充证据
数据点#3
作为额外的证据,有一个线索表明有人正在尝试做同样的事情,并为失败而感到沮丧。标题为:线程:Cron-@reboot作业不起作用。
摘抄
回复:Cron-@reboot作业不起作用
引用最初由ceallred发表查看此内容使我丧命...尝试了包装脚本。手动运行会生成日志文件...正在重新启动,作业无法运行或创建日志文件。
Syslog显示CRON运行了任务...但是,再次没有输出,该进程未运行。7月15日20:07:45 RavenWing cron [1026]:(CRON)信息(正在运行@reboot作业)7月15日20:07:45 RavenWing CRON [1053]:(已锁定)CMD(/ home / ceallred / Scripts / run_spideroak。 sh> /home/ceallred/Scripts/SpiderOak.log 2>&1&)
似乎cron不喜欢@reboot命令...。还有其他想法吗?
好吧...部分解决了。我将其标记为已解决,并以新问题开始一个新线程.....
我认为答案是当CRON尝试运行脚本(存储在/ home / username / scripts中)时未挂载我的加密主目录。移至/ usr / scripts,作业按预期运行。
因此,现在看来这是一个难题。进程开始了,但是到启动过程结束时,它已经消失了。由于某种原因,我猜测是崩溃。...有关此问题的新话题。
感谢您的所有帮助!
一旦上述用户发现了他的问题,他就可以解决@reboot
用户的crontab条目。
我不确定在Ubuntu上使用的是哪个版本的cron,但这似乎表明用户也可以使用@reboot
,或者该错误已在后续cron版本中修复。
数据点#4
我在CentOS 6上进行了以下测试,并且可以正常工作。
例
$ crontab -l
@reboot echo "hi" > /home/sam/reboot.txt 2>&1
然后,我重新启动了系统。
$ sudo reboot
重新启动后。
$ cat reboot.txt
hi
外卖
- 系统和用户crontab条目似乎都支持此功能。
- 您必须确保在您的特定发行版和/或cron软件包版本中支持/工作该版本。
有关实际机制如何工作的更多信息,@reboot
我确实在这篇博客中讨论了内脏。标题为:@reboot-解释简单的cron魔术。
调试crond
您可以crond
通过在基于RHEL / CentOS / Fedora的发行版的此配置文件中添加以下内容来提高详细程度。
$ more crond
# Settings for the CRON daemon.
# CRONDARGS= : any extra command-line startup arguments for crond
CRONDARGS="-L 2"
有效级别为0、1或2。要将文件恢复为默认日志记录级别,只需"-L 2"
在完成情况调试后将其删除即可。