通过 Crontab 运行脚本有不同的结果?

通过 Crontab 运行脚本有不同的结果?

我有以下脚本:

#!/bin/bash
/usr/bin/echo q | /usr/bin/htop -C | /usr/bin/aha --line-fix | /usr/bin/html2text -width 999 | /usr/bin/grep -v "F1Help\|xml version=" > htop.txt

它只是捕获htop输出。

如果我通过命令行运行脚本,它工作正常,但如果我通过crontabroot 运行它:

15 15 * * 1-5 /bin/bash /root/collect_system_stats.sh

htop.txt 将只有 1 个字节并hexdump显示:

0000000 000a                                   
0000001

我做错了什么?

答案1

您应该将 grep 与该 --line-buffered 标志一起使用,否则 grep 在第一个匹配后退出。我对此没有完整的解释,但这就是我的脚本在类似情况下工作的原因。

成立这个答案到 grep 的行缓冲区。

使用 htop 以 root 用户身份安装 cronjob 可能会导致错误消息:

/usr/bin/htop -C Error opening terminal: unknown

TERM=xterm在脚本中设置可以解决这个问题。

相关内容