Saya sedang menulis aplikasi daemon sederhana menggunakan C/C++ dan saya ingin memulainya saat Linux dijalankan.
Saya telah mencoba memodifikasi /etc/init.d/skeleton
untuk menambahkan skrip ke direktori init.d sebagai berikut
-
menambahkan aplikasi daemon saya di
/usr/sbin/
direktori dan mengubahNAME=myDaemon
-
tulis
update-rc.d myDaemon default
di Terminal -
dan itu menambahkan tautan simbolis ke
rc#.d
direktori
Tapi itu tidak berhasil.
Percobaan kedua saya adalah memodifikasi rc.local
sebagai
/usr/sbin/myDaemon start
Tapi ini juga tidak berhasil.
Bagaimana saya bisa membuat daemon saya mulai dengan OS? Saya ingin melakukan semuanya secara terprogram.
Saya menggunakan Ubuntu 10.10 tetapi jika ada solusi umum untuk semua distribusi, itu bagus!
Jawaban yang Diterima:
Anda tidak memodifikasi /etc/init.d/skeleton
mengajukan. Anda menyalin ke file baru /etc/init.d/mamoudservice
(ganti mamoudservice
dengan nama yang lebih cocok) dan kemudian Anda mengedit file baru itu dengan tepat.
Kemudian Anda menambahkan symlink dari /etc/rc2.d/S99mamoudservice
ke /etc/init.d/mamoudservice
dll.
Gunakan mis.
/bin/bash -vx /etc/init.d/mamoudservice start
untuk memahami bagaimana bash
shell menafsirkan skrip Anda.
Jika program daemon Anda /usr/sbin/mamouddaemon
dikodekan dalam C atau C++, saya sarankan menggunakan openlog dan syslog
di dalam, setidaknya untuk mendapatkan pesan debug (jangan keluarkan ke stderr
atau stdout
dalam daemon, itu tidak bisa ke mana-mana).
Alternatif untuk memiliki /etc/init.d/mamoudservice
skrip mungkin untuk menempatkan @reboot
entri di crontab
. Anda