Di Linux, saya telah menulis beberapa skrip untuk dieksekusi saat boot dan bermain-main dengan berbagai cara menginstalnya. Untuk skrip yang lebih besar saya akan memasukkan /etc/init.d
dan menautkan /etc/rc.d/rc?.d
runlevel yang sesuai . Untuk skrip yang lebih kecil, saya akan menambahkan /etc/rc.d/rc.local
. Proses ini sepertinya berjalan dengan lancar.
Sekarang saya telah men-tweak salah satu skrip saya dan gagal. Saya bersenang-senang mendiagnosis karena sepertinya saya tidak dapat menangkap output kesalahan. Saya sudah memeriksa /var/log/messages
dan menyodok sisa /var/log
tetapi tidak dapat menemukan sesuatu yang berguna.
Apakah ada yang tahu:
- apakah pesan kesalahan ini secara otomatis ditangkap di suatu tempat?
- jika tidak, bagaimana saya bisa menangkap stdout / stderr dari skrip init.d saya?
Terima kasih sebelumnya.
Jawaban:
Tidak - mereka pergi ke STDOUT (jika Anda menggunakan
echo
) atau STDERR (jika Anda menggunakanecho >&2
).Script Anda harus menulis ke log dan / atau syslog sendiri (distribusi Anda mungkin berisi beberapa fungsi init.d yang mungkin membantu di sana - tambahkan distribusi Anda ke pertanyaan Anda).
Jika Anda mencari log, cari
tee
perintah. Jika Anda pergi untuk melihat sysloglogger
. Anda dapat menggabungkannya dengan cara apa pun yang Anda inginkan.sumber
Tulis skrip pembungkus yang memanggil skrip Anda dan arahkan output ke file
sumber
Anda bisa membuat fungsi untuk menggema pesan ke layar dan ke syslog, seperti ini:
Anda juga bisa memasukkannya ke file terpisah dan memasukkannya ke dalam skrip Anda
sumber
[ -r ... ]
tes untuk memeriksa apakah ada?Pesan dari skrip init umumnya tidak ditangkap di mana pun. Dengan demikian, Anda perlu menerapkan cara untuk melakukannya sendiri. Ide yang bagus adalah menggunakan
logger
untuk mengirim semua output ke syslog. Contoh ini akan mengirim stdout dan stderr ke syslog:Saya menemukannya di artikel hebat ini: http://urbanautomaton.com/blog/2014/09/09/redirecting-bash-script-output-to-syslog/ .
sumber