根 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 文件中犯了错误,但这个解决方案对我来说没问题。
我正在尝试 运行 根 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 文件中犯了错误,但这个解决方案对我来说没问题。