我有以下脚本:
#!/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
输出。
如果我通过命令行运行脚本,它工作正常,但如果我通过crontab
root 运行它:
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
在脚本中设置可以解决这个问题。