Saya perlu membuat daemon dari aplikasi di Debian. Apakah ada alat standar untuk ini di Debian seperti "pemula" di Ubuntu? Saya hanya perlu perintah start-stop, untuk memulai program sebagai daemon dengan beberapa opsi dan file pid dan membunuhnya dengan file pid.
Saya melihat init.d tapi sepertinya ini untuk peluncuran boot-time. Saya ingin memulai daemon saya secara manual.
debian
daemon
debian-lenny
upstart
Kuroki Kaze
sumber
sumber
Jawaban:
Anda dapat membuat daemon secara manual dengan mengikuti
/etc/init.d/skeleton
file di Debian.Anda dapat menggunakan
/usr/bin/service
untuk meluncurkan$ sudo service yourdaemon start
dan menghentikan$ sudo service yourdaemon stop
dasmon Anda.Selama Anda tidak menautkan skrip ke salah satu
/etc/rc?.d
direktori, skrip itu tidak akan mulai saat startup.Di sisi lain, Anda mungkin ingin melihat daemontools , yang tidak standar pada debian tetapi memiliki beberapa fitur menarik.
sumber
/usr/bin/service
pada sistem saya (ini Debian Lenny), tetapi saya dapat memulai skrip langsung dengan/etc/init.d/myservice start
.sudo invoke-rc.d yourservice start
jugaDebian (dan Ubuntu) memiliki program pembantu
start-stop-daemon
yang digunakan dalam skrip init. Ini memiliki beberapa opsi untuk memulai dan melacak daemon. Anda cukup menulis pembungkus di sekitarnya, missumber
Untuk melakukan daemonisasi proses untuk Debian dengan benar, Anda perlu mengambil beberapa langkah termasuk melepaskan diri dari proses pengendalian, mengatur ulang IO, dan membuat file proses id untuk dimainkan dengan baik. Anda bisa menggunakan sesuatu seperti program daemon dari paket dengan nama yang sama untuk melakukannya untuk Anda. Jika itu yang ingin Anda lakukan, jawabannya dapat ditemukan di sini di StackOverflow: /programming/3095566/linux-daemonize
Perintah pemula lebih mirip dengan perintah invian-rc.d Debian atau perintah layanan dari paket sysvinit-utils. Mereka berharap untuk bekerja dari skrip init di /etc/init.d. Merupakan standar pada Debian untuk membuat salah satu dari itu untuk paket Anda dan menggunakannya menggunakan program start-stop-daemon seperti yang Anda lihat pada contoh /etc/init.d/skeleton.
Hanya karena Anda membuat skrip /etc/init.d/myservice tidak berarti skrip harus mulai secara otomatis. Anda dapat menyesuaikan runlevel di mana ia berhenti dan mulai secara otomatis menggunakan alat seperti update-rc.d. Ini dijelaskan secara lebih rinci di Nonaktifkan layanan dari mulai dari semua runlevel?
sumber