以 root 身份运行本地用户 cronjob

以 root 身份运行本地用户 cronjob

我尝试以 root 用户身份运行 cron 作业,但无法执行。以下是我尝试过的方法...

  1. 将作业添加到我的用户 crontab(crontab -e)并将用户设置为 root ...

    17 10 * * * root /etc/cron.daily/cammedia.sh
    
  2. 将作业添加到根用户 crontab(sudo crontab -e)并添加一些 PATH...

    PATH=/usr/sbin:/usr/bin:/sbin:/bin
    PATH=/usr/sbin:/usr/bin:/sbin:/etc
    PATH=/bin:/sbin:/usr/bin:/usr/sbin:/home/scott
    PATH=/bin:/sbin:/usr/bin:/usr/sbin:/etc
    #
    0 4 * * * /etc/cron.daily/cammedia.sh
    

这是测试运行后运行 crontab -l(本地用户帐户)的结果:

May 26 10:17:01 WEBCAM CRON[89901]: (scott) CMD (root /etc/cron.daily/cammedia.sh)
May 26 10:17:01 WEBCAM CRON[89902]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
May 26 10:17:01 WEBCAM CRON[89900]: (CRON) info (No MTA installed, discarding output)

有什么建议吗?

答案1

只需完全删除该行即可。只需放入一个脚本/etc/cron.daily即可使其每天运行一次。您必须将其重命名为不包含后缀,.sh以适合 cron.daily 目录。

如果您不想在 cron.daily 的默认时间运行它,您应该将脚本存储在其他地方,例如/usr/local/bin/cammedia.sh

如果您打算这样做,您应该知道只有 root 可以以其他用户身份运行 cron 作业,对于普通用户来说这是无效的。

chmod +x cammedia.sh无论如何,不​​要忘记通过运行使脚本可执行。

脚本的输出将通过电子邮件发送给您。如果这不可能(并且根据您问题中的日志,这不可能),则输出将被丢弃。还有其他方法可以获取输出。例如,您可以将以下语句添加到 cammedia 脚本中:

logger "cammedia script run"

您应该会在系统日志中看到一些内容。

关于这个主题的一篇好文章是https://help.ubuntu.com/community/CronHowto,它将帮助您解决问题。

相关内容