命令在crontab中失败但在终端中有效

我已经检查过有关crontab故障的问题 。

我正在运行此命令来捕获htop命令并以html格式创建它的快照( htop输出到人类可读文件 ):

 /bin/echo q | /usr/bin/htop | /usr/bin/aha --black --line-fix > /tmp/htop.html 

此命令在终端上正常工作,它不依赖于任何环境变量。 当我将此命令添加为cronjob时,它只生成一个空的html文件:

       stdin   
 

有什么理由不能通过cron捕获输出?

htop需要将TERM变量设置为例如xterm以输出任何数据,因此只需在cron行中为xterm设置此变量,例如:

 @hourly echo q|TERM=xterm htop|aha --black --line-fix >/tmp/htop.html 

如果你想测试一个命令是否真的不依赖于任何环境变量 – 这通常会导致cron问题,请参阅你链接的问题 – 使用env -i “以空环境开始”:

 $ env -i htop Error opening terminal: unknown. 

结合crondiff和终端的环境,这是测试命令需要哪些变量的好方法。 htop实际上需要TERM

 env -i TERM=xterm htop