crontab 为 root 而不是为普通用户执行

问题描述

重新启动时,我的用户(此处为 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 命令”等。

此外,输出不定向到用户,而是打印到根邮件中。所以这个解决方案真的很糟糕。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...