Proses daemon tidak memiliki stdout sama sekali.
Tidak benar. Jika demon seseorang dikelola oleh salah satu keluarga daemontools dari toolsets ( https://unix.stackexchange.com/a/179798/5132 ), maka demon akan mewarisi deskriptor file output standar terbuka, untuk pipa yang menghubungkan ke layanan logging. Jika seseorang menggunakan systemd, maka (dalam konfigurasi default), demon akan mewarisi deskriptor file output terbuka standar, untuk soket yang menghubungkannya ke layanan jurnal systemd.
Dalam kasus apa pun, Anda menggabungkan init.d
skrip, yang mengelola demon, dengan demon itu sendiri. Dengan System V rc
dan dengan systemd, init.d
skrip hanya menyebabkan awal dan berhenti dari proses demon yang tepat. (Dalam kasus Sistem V rc
melakukan hal ini dengan pembantu seperti start-stop-daemon
. Dalam kasus systemd, digunakan systemctl
untuk mengirim perintah melalui D-Bus RPC untuk memproses # 1.) Ini bukan proses demon itu sendiri.
Output standar dari proses demon tidak harus ada hubungannya sama sekali dengan output standar dari init.d
skrip. Dan itu adalah output standar dari yang terakhir yang Anda tangani log_daemon_msg
. Fungsi shell ini, dan kerabatnya, mencetak pesan-pesan ramah dari skrip manajemen demon , menunjukkan apa yang dilakukan skrip manajemen ketika mencoba untuk memberlakukan perintah-perintah kontrol demon. Mereka tidak digunakan dalam demon itu sendiri .
Ironisnya, karena manajemen daemon dilakukan secara berbeda dengan systemd, semua log_daemon_msg
perintah menjadi tidak relevan, karena setiap skrip manajemen yang sumber /lib/lsb/init-functions
akhirnya mengalihkan semua perintah kontrol ke systemctl
.
Bagaimana saya bisa mengarahkan log init ke file log sistem sehingga saya bisa men-debug masalah waktu boot?
Anda punya tugas. Anda telah memutuskan bahwa subtugas dari tugas itu dapat diatasi log_daemon_msg
, dan di sini Anda bertanya bagaimana log_daemon_msg
melakukan sesuatu yang tidak dirancang untuk dilakukan. Berkonsentrasilah pada pertanyaan Anda yang sesungguhnya .
Ubuntu 14,04 menggunakan pemula. Itu memiliki /etc/init/rc.conf
pekerjaan pemula yang menyediakan kompatibilitas mundur dengan Sistem V rc
dengan benar-benar menjalankan Sistem V rc
setiap kali peristiwa runlevel terjadi. Pekerjaan ini tercantum dalam Cookbook kaya baru dan seperti yang Anda lihat menggunakan yang console output
stanza .
Seperti yang dapat Anda lihat dari Cookbook , dengan pemula - dan juga - demon (secara default) mewarisi deskriptor file output standar terbuka yang terhubung ke mekanisme logging per-pekerjaan pemula. Sekali lagi, anggapan bahwa demon "tidak memiliki output standar" adalah salah. The /etc/init/rc.conf
pekerjaan menggunakan (non-default) pilihan untuk menghubungkan output standar untuk konsol. Ini tentu saja juga mengarahkan output dari berbagai skrip manajemen demon yang akan dihasilkan oleh System V rc
, pada gilirannya.
Jadi, jika Anda ingin mencatat output /etc/init/rc.conf
pekerjaan Anda , dan semua skrip manajemen System V yang dihasilkannya, di tempat lain, modifikasi spesifikasi pekerjaan itu.
Jika Anda ingin men-debug masalah waktu boot, gunakan mekanisme yang dijelaskan di Cookbook pemula (dan juga di AskUbuntu Stack Exchange dalam beberapa jawaban) untuk debugging waktu boot.
Bacaan lebih lanjut