为什么这个命令不能在 cron 中运行?

为什么这个命令不能在 cron 中运行?

我有这个命令

echo "$(date +"%T") $(sensors | grep -Eo "[0-9]+\.[0-9]+" | head -1)" >> /home/me/temp_log.txt

它获取一些传感器数据并将其放入文件中,我想每半小时运行一次。它在 stdin 中运行良好,但当我将其放入我的 crontab 文件中时,如下所示:

0,30 * * * * echo "$(date +"%T") $(sensors | grep -Eo "[0-9]+\.[0-9]+" | head -1)" >> /home/me/temp_log.txt

它就是无法运行。Vim 在 % 后突出显示很奇怪,但我不确定这是否是问题的一部分。

答案1

因为cron不提供完整bash的解析。更容易的是:

0,30 * * * * /home/me/bin/mycron

哪里/home/me/bin/mycron

#!/bin/bash
echo "$(date +"%T") $(sensors | grep -Eo "[0-9]+\.[0-9]+" | head -1)" >> /home/me/temp_log.txt

并且,由于cron有自己的想法PATH,您可能需要使用命令的完整路径sensors

相关内容