別の結果として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ただ出力をキャプチャします。

コマンドラインからスクリプトを実行すると正常に動作しますが、rootを介してcrontab実行すると次のようになります。

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

htop.txtは1バイトに過ぎず、hexdump以下を表示します。

0000000 000a                                   
0000001

私は何が間違っていましたか?

ベストアンサー1

--line-buffered フラグでgrepを使用する必要があります。それ以外の場合は、最初の一致後にgrepが終了します。これについての完全な説明はありませんが、これが私のスクリプトが同様の状況で動作する理由です。

確立されたこの回答grep のラインバッファです。

htopを使用してcronjobをrootとしてインストールすると、次のエラーメッセージが表示されることがあります。

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

TERM=xtermスクリプトで設定すると、この問題を解決できます。

おすすめ記事