以 root 身份运行本地用户 cronjob

Sco*_*ott 2 cron

我正在尝试以 root 用户身份运行 cron 作业,但它不会执行。这是我尝试过的...

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

    17 10 * * * root /etc/cron.daily/cammedia.sh
    
    Run Code Online (Sandbox Code Playgroud)
  2. 将作业添加到 root 用户 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
    
    Run Code Online (Sandbox Code Playgroud)

这是测试运行后运行 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)
Run Code Online (Sandbox Code Playgroud)

建议?

Seb*_*ark 5

只需完全删除该行。简单地放置一个脚本/etc/cron.daily就可以让它每天运行一次。您必须将其重命名为不包含.sh适合 cron.daily 目录的后缀。

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

如果你打算这样做,你应该知道只有 root 可以作为另一个用户运行 cron 作业,对于普通用户来说它是无效的。

chmod +x cammedia.sh在任何情况下都不要忘记通过运行使脚本可执行。

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

logger "cammedia script run"
Run Code Online (Sandbox Code Playgroud)

你应该在 syslog 中看到一些东西。

关于这个主题的一个很好的阅读是https://help.ubuntu.com/community/CronHowto,它会帮助你解决你的问题。