Saya menemukan masalah ini, jadi saya bertanya-tanya bagaimana mungkin?
Menjalankan perintah standar:
# 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
Oke, mari kita coba untuk mendapatkan baris pertama saja:
# zabbix_sender -c zabbix_agentd.conf -k mmysql.QCInserts -o 14 | head -1
sent: 1; skipped: 0; total: 1
Bagaimana dengan kepala standar?
# zabbix_sender -c zabbix_agentd.conf -k mmysql.QCInserts -o 14 | head
sent: 1; skipped: 0; total: 1
Grep terbalik? sed? tee?!?!? !!?
# 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
stderr ke stdout?
# zabbix_sender -c zabbix_agentd.conf -k mmysql.QCInserts -o 14 2>&1 | tee
sent: 1; skipped: 0; total: 1
Saya benar-benar bingung ...
tee
? Apa yang terjadi jika Anda berlarizabix_sender <options> 2>&1 | head -1
?Jawaban:
Ini bisa terjadi jika aplikasi menulis langsung ke TTY, bukan STDOUT atau STDERR.
Anda dapat bermain dengan perilaku ini dengan membandingkan 2 contoh di bawah ini
Perhatikan yang pertama tidak menunjukkan apa-apa, tetapi yang kedua tidak. Itu karena kami mengirim output langsung ke tty dan melewati pengalihan ke
/dev/null
.Anda dapat menyiasati hal-hal seperti ini dengan menggunakan
script
Pada dasarnya
script
utilitas membuat tty palsu dan meluncurkan perintah di tty itu. Setiap output dari perintah dikirim ke STDOUT yang kemudian dapat Anda redirect seperti biasa.sumber
script: illegal option -- c
:( Apakah ada solusi lain yang Anda ketahui?