如何在/etc/cron.d中使用@reboot


17

我正在将单个用户的crontabs迁移到/etc/cron.d,因为这将允许正确的备份,还原和版本控制。

到目前为止,据我了解,用户的crontab和etc的唯一区别是您必须将用户指定为第六列。这是正确的吗?

我的主要问题是,在网上找不到任何答案:@reboot/etc/cron.d或/ etc / crontab中使用的正确方法是什么?

@reboot root command什么?

Answers:


20

crontab的手册页

/etc/cron.d/中的作业

cron.d中的作业是系统作业,通常用于多个用户。这就是为什么需要用户名的原因。第一行的MAILTO是可选的。

在/etc/cron.d/job中工作的示例

 #login as root
 #create job with preferred editor (e.g. vim)
 MAILTO=root
 * * * * * root touch /tmp/file

这是/ etc中有关crontab的整个部分,因此我想将作业运行的用户包括在内确实是唯一的区别。

再次从同一手册页:

支持以下特殊的时间规范“昵称”,它们替换了5个初始时间和日期字段,并以'@'字符作为前缀:

@reboot:重新启动后运行一次。

因此,您推断使用@reboot的正确方法是

   @reboot user_name command

正确的


1

如果/etc/crontab您只需要添加这些行。

@reboot        command

命令可以是任何脚本或单个文件。


那样有用吗? /etc/crontab通常需要一个用户名。
mwfearnley

1

如果您以如下方式交互式运行它,则无需指定用户:

crontab -e
@reboot /root/mycommand

如果要将其作为文件放在/etc/cron.d中,例如/etc/cron.d/mycronfile,则需要将用户放入:

@reboot root /root/mycommand
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.