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 defaultdi Terminal -
dan itu menambahkan tautan simbolis ke
rc#.ddirektori
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