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

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

我正在将个人用户的 crontab 迁移到 /etc/cron.d,因为这样可以允许正确的备份、恢复和版本控制。

到目前为止,据我所知,用户的 crontab 和其他 crontab 之间的唯一区别是您必须将用户指定为第 6 列。这是正确的吗?

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

就像是 @reboot root command

答案1

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

这就是关于 crontab 的整个部分/ETC,所以我猜想包含该作业运行所用的用户确实是仅有的不同之处。

再次引用同一个手册页:

支持这些特殊的时间规范“昵称”,它们取代了初始的 5 个时间和日期字段,并以“@”字符为前缀:

@reboot :重启后运行一次。

因此,你推断正确的使用方式@重启

   @reboot user_name command

正确的

答案2

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

crontab -e
@reboot /root/mycommand

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

@reboot root /root/mycommand

答案3

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

@reboot        command

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

相关内容