我想以特定用户身份在重启时使用 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 -e
www用户并添加:
@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 -