私はこの質問を偶然見つけましたが、これがどのように可能であるか疑問に思います。
標準実行コマンド:
# zabbix_sender -c zabbix_agentd.conf -k mmysql.QCInserts -o 14
info from server: "Processed 0 Failed 1 Total 1 Seconds spent 0.000017"
sent: 1; skipped: 0; total: 1
いいですね。最初の行だけをインポートします。
# zabbix_sender -c zabbix_agentd.conf -k mmysql.QCInserts -o 14 | head -1
sent: 1; skipped: 0; total: 1
標準ヘッドはどうですか?
# zabbix_sender -c zabbix_agentd.conf -k mmysql.QCInserts -o 14 | head
sent: 1; skipped: 0; total: 1
リバースgrep? sed?ティー? ! ? ! ? ! ! ?
# zabbix_sender -c zabbix_agentd.conf -k mmysql.QCInserts -o 14 | grep -v pero
sent: 1; skipped: 0; total: 1
# zabbix_sender -c zabbix_agentd.conf -k mmysql.QCInserts -o 14 | sed 's/foo/bar/'
sent: 1; skipped: 0; total: 1
# zabbix_sender -c zabbix_agentd.conf -k mmysql.QCInserts -o 14 | tee
sent: 1; skipped: 0; total: 1
標準出力の標準エラー?
# zabbix_sender -c zabbix_agentd.conf -k mmysql.QCInserts -o 14 2>&1 | tee
sent: 1; skipped: 0; total: 1
本当に混乱しています...
答え1
これは、アプリケーションがSTDOUTまたはSTDERRの代わりにTTYに直接書き込む場合に発生する可能性があります。
以下の2つの例を比較して、この動作を試すことができます。
( echo foo ) &>/dev/null
( echo foo > $(tty) ) &>/dev/null
最初の項目には何も表示されませんが、2 番目の項目には何も表示されません。これは出力をttyに直接送ります/dev/null
。
以下を使用して、このような問題を解決できます。script
script -c '( echo foo > $(tty) ) &>/dev/null' >/dev/null
デフォルトでは、このscript
ユーティリティは偽のttyを生成し、そのttyからコマンドを起動します。コマンドのすべての出力はSTDOUTに送信され、その後正常にリダイレクトできます。