Saya punya program yang harus saya jalankan saat startup, ia memiliki output pada stdout dan stderr yang ingin saya redirect ke log sistem menggunakan perintah logger. Apa yang saya miliki dalam skrip startup saya adalah thie:
/ home / dirname / application_name -v | logger 2> & 1 &
Ini mengarahkan stdout ke syslog baik-baik saja tetapi stderr akan datang ke konsol, jadi saya perlu memperbaiki perintah.
shell
io-redirection
stdout
stdin
fret basset
sumber
sumber
>&
: tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-3.htmlJawaban:
Anda harus menggabungkan output dari STDERR dan STDOUT sebelum mengirimnya
logger
. Coba ini sebagai gantinya:Contoh
Anda dapat menggunakan notasi yang disingkat di sini juga, jika digunakan dengan hati-hati dalam shell Bash yang sebenarnya (jangan dikacaukan dengan Dash):
CATATAN: Ini setara dengan
<cmd1> 2>&1 | <cmd2>
. Sekali lagi hanya menggunakan hal di atas ketika menggunakan Bash shell yang sebenarnya secara interaktif, akan menjadi cara yang baik untuk mendekatinya.kutipan dari ABSG
Referensi
sumber
dash
mencoba untuk mengeksekusi skrip saat boot hanya untuk gagal dan memungkiri proses boot Anda ... yah ... Ketika sintaks tersebut disebutkan itu harus selalu dalam konteks cangkang interaktif saja , atau, setidaknya, itulah pendapat saya.2>&1
tetapi peringatan Anda cukup bijaksana, mengingat contohnya adalah berurusan dengan startup. Saya akan membuat tips yang terakhir lebih menonjol dengan peringatan bahwa itu dimaksudkan untuk shell Bash hanya interaktif.dash
, meskipun - itu benar-benar cepat.