我可以在 cron.d 文件中使用 @reboot 吗?

我可以在 cron.d 文件中使用 @reboot 吗?

我想以特定用户身份在重启时使用 cron 运行一项作业。我已能够使用 crontab 成功执行此操作,并将以下内容写入 /var/spool/cron/crontabs/username:

 @reboot ./run.sh >>~/tracefile 2>&1

但是,我想使用 /etc/cron.d/filename。此文件中的 Cron 作业需要额外的列来指示用户运行的内容,因此我使用:

 @reboot wwwuser ./run.sh >>~/tracefile 2>&1

这似乎不起作用。我是否应该能够在 cron.d 文件中将 @reboot 与用户名一起使用?

答案1

我认为你不应该添加@reboot wwwuser ...到,而应该以用户身份/var/spool/cron/crontabs/username运行crontab -ewww用户并添加:

@reboot ./run.sh >>~/tracefile 2>&1

以防万一,请确保使用脚本的完整路径。

如果您以编程方式进行这些更改,您可以尝试以下操作:

#write out current crontab
crontab -u wwwuser -l > mycron_wwwuser

#echo new cron into a temp cron file
echo "@reboot ./run.sh >>~/tracefile 2>&1" >> mycron_wwwuser

#install new cron file
crontab -u wwwuser mycron_wwwuser

#remove the temp cron file
rm mycron_wwwuser

...或者更好的是这个:

crontab -u wwwuser -l | { cat; echo "@reboot ./run.sh >>~/tracefile 2>&1"; } | crontab -u wwwuser -

相关内容