问题描述
重新启动时,我的用户(此处为 k)未执行 Cron。 我放了一个测试脚本,看看它是否以 root 身份执行:
crontab -e
然后放入crontab:
@reboot echo date >> ~/reboot-dates
它正在工作并在 /root/ 中创建罚款。现在我对用户 k 做了同样的事情:
crontab -e -u k
并添加了上面带有 ~/ 和完整路径的测试脚本行:
@reboot echo date >> /home/k/reboot-dates
@reboot echo date >> ~/reboot-dates
我也把 k 放在 /etc/cron.allow 中:
echo k >> /etc/cron.allow
但它不是以用户 k 开始的。我看到 cron 任务以 root 和用户 k 身份运行,当我这样做时:
ps -ef|grep cron|grep -v grep
我尝试以 root 和用户 k 的身份编辑用户 crontab,但它不起作用。 我以 root 身份尝试使用 runuser -l k -c "command" 不起作用,我也尝试使用 sleep 10 && "runuser..." 仍然没有成功......这些命令在 cron 之外工作。
解决方法
好的,这是在 crontab 根文件中起作用的:
@reboot /sbin/runuser -l k -c "date >> ~/reboot-dates"
如果有人有更好的解决方案,请通知我。遗憾的是,只有 root 才能以这种方式添加 cronjobs。您还可以 cat /var/mail/root 查看语法错误,例如“找不到 runuser 命令”等。
此外,输出不定向到用户,而是打印到根邮件中。所以这个解决方案真的很糟糕。