根 cronjob 不正确 运行,用户 cronjob 正确

Root cronjob does not run correctly, user cronjob does

我正在尝试 运行 根 cronjob 来执行脚本。

这是我放入 sudo crontab -e 的 cronjob:

*/1 * * * * ~/temperature_log/logtemp.sh >> ~/temperature_log/templog.log>&1

该脚本需要 hddtemp 的 root 权限。 不幸的是,templog.log 文件从未出现。系统日志说:

Jun  6 13:09:01 user CRON[32433]: (root) CMD (~/temperature_log/logtemp.sh >> ~/temperature_log/templog.log>&1)
Jun  6 13:09:01 user CRON[32426]: (CRON) info (No MTA installed, discarding output)

很明显,脚本是 运行,但那里出了点问题。

甚至陌生人:如果我 运行 一个用户 cron 通过 crontab -e,脚本执行(虽然没有 root 权限,所以它对我没有用)并写入日志文件。

如何确保我的根 crontab 正常工作?

我以没有 root 权限的用户身份通过​​ ssh 连接到这台计算机,但我有 root 密码。

编辑

我现在更改了程序,我希望它通过 logger 登录到系统日志。同样,运行手动运行脚本并正确记录,但是 运行从 crontab 运行它只显示:

Jun 6 14:27:01 user CRON[1657]: (root) CMD (Jun 6 15:06:01 insystems CRON[25328]: (root) CMD (/bin/sh ~/temperature_log/logtemp.sh)

没有记录任何信息。我添加了 /dev/null 部分以消除电子邮件警告。我不打算安装电子邮件服务。

您是否编写了发送电子邮件警报的脚本?未安装邮件服务时会出现警告“(未安装 MTA,丢弃输出)”。

大多数 Linux 发行版都安装了邮件服务(包括 MTA)。 Ubuntu 没有。

您可以安装一个邮件服务,例如postfix,来解决这个问题。

sudo apt-get install postfix

此外,请尝试提供文件的完整路径(绝对路径): ~/temperature_log/logtemp.sh 和 ~/temperature_log/templog.log

确保logtemp.sh有执行权限。如果否,则发出命令

chmod +x logtemp.sh

我的解决方案是不将 cronjob 添加到 crontab -e,而是添加到 /etc/crontab。从那时起,它就没有问题了。

我可能在另一个 crontab 文件中犯了错误,但这个解决方案对我来说没问题。