根 crontab 无法正确运行,用户 cron 作业可以
Posted
技术标签:
【中文标题】根 crontab 无法正确运行,用户 cron 作业可以【英文标题】:Root cronjob does not run correctly, user cronjob does 【发布时间】:2019-06-06 10:08:20 【问题描述】:我正在尝试运行根 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)
显然,脚本正在运行,但从那里出现了问题。
更奇怪的是:如果我只通过 crontab -e
运行用户 cron,脚本会执行(但没有 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 【参考方案1】:您是否编写了发送电子邮件警报的脚本?未安装邮件服务时会出现警告“(未安装 MTA,丢弃输出)”。
大多数 Linux 发行版都安装了邮件服务(包括 MTA)。 Ubuntu 没有。
您可以安装一个邮件服务,例如 postfix,来解决这个问题。
sudo apt-get install postfix
另外,请尝试提供文件的完整路径(绝对路径): ~/temperature_log/logtemp.sh 和 ~/temperature_log/templog.log
确保 logtemp.sh 具有执行权限。如果否,则发出命令
chmod +x logtemp.sh
【讨论】:
我尝试了所有这些东西,除了后缀。如果我只想登录syslog
,为什么还需要邮件服务?
当您在 shell 中执行脚本时,您是否获得了所需的输出?还可以尝试在调用脚本之前附加 /bin/sh。示例:*/1 * * * * /bin/sh /root/temperature_log/logtemp.sh >> /root/temperature_log/templog.log > &1
如果我这样做sudo sh logtemp.sh
(系统日志:Jun 6 14:43:08 user user: Temperature log: /dev/sda1: CT250MX500SSD1: 54°C
),它就可以工作。但是当 cron 调用它时,我在系统日志中得到的只是Jun 6 14:43:01 user CRON[12283]: (root) CMD (/bin/sh ~/temperature_log/logtemp.sh)
【参考方案2】:
我的解决方案是将 cronjob 添加到 crontab -e
而不是 /etc/crontab
。从那里开始,它没有问题。
我可能在另一个 crontab 文件中犯了一个错误,但这个解决方案对我来说没问题。
【讨论】:
以上是关于根 crontab 无法正确运行,用户 cron 作业可以的主要内容,如果未能解决你的问题,请参考以下文章