Soru Debian'da daemon yapmak için “standart” bir yol var mı?


Debian'daki uygulamadan bir daemon oluşturmam gerekiyor. Bunun için Debian'da Ubuntu'da "upstart" gibi standart bir araç var mı? Bazı seçenekleri ve bir pid dosyasıyla bir programı bir program olarak başlatmak ve pid dosyasıyla öldürmek için sadece start-stop komutlarına ihtiyacım var.

İnit.d 'e baktım ama sanki açılış zamanı lansmanı için. Daemon'ımı el ile başlatmak istiyorum.


17
2018-04-26 14:07


Menşei


Bunun debian jessie için değiştiğine dikkat edin, bu da varsayılanı sysvinit'ten systemd'ye çevirdi. - Jules
debian jessie, bir geri dönüş yapılandırması (/etc/init/{service}.conf) yoksa ve bir sysvinit config (/ etc / init) varsa, en azından / usr / bin / service kullanarak geriye dönük uyumluluğa sahip gibi görünür. d / {service}), daha sonra / usr / bin / service sysvinit altında olduğu gibi /etc/init.d/{service} ile etkileşime girecektir. - Kevin


Cevaplar:


Senaryonunu el ile oluşturabilirsin. /etc/init.d/skeleton Debian'da dosya var.

Kullanabilirsiniz /usr/bin/service çalıştırmak $ sudo service yourdaemon start ve sstop $ sudo service yourdaemon stop senin kızın.

Komut dosyanızı herhangi biriyle ilişkilendirmediğiniz sürece /etc/rc?.d dizinler, başlangıçta başlamaz.

Öte yandan, bakmak isteyebilirsiniz Daemon araçlarıDebian'da standart olmayan ama bazı ilginç özelliklere sahip.


18
2018-04-26 14:27



Teşekkürler. Görünüşe göre yok /usr/bin/service Benim sistemimde (Debian Lenny), ama ben doğrudan /etc/init.d/myservice start. - Kuroki Kaze
Kullanabilirsiniz sudo invoke-rc.d yourservice start de - chmeee
bunu bilmiyordum. Teşekkürler - chiggsy


Debian (ve Ubuntu) yardımcı programa sahiptir start-stop-daemon init betiklerinde kullanılır. Daemonları başlatmak ve izlemek için oldukça az seçenek var. Çevresine bir sarıcı yazabilirsiniz, ör.

case $1 in
start) start-stop-daemon --start --exec /my/exec/prog --pidfile /my/pid/file --background
       ;;
stop)  start-stop-daemon --stop --pidfile /my/pid/file 
       ;;
esac

3
2018-04-26 14:41



Yukarıda önerdiğimiz /etc/init.d/skeleton'u tercih ederim çünkü aynı zamanda bağımlılık önyüklemesine geçişle birlikte yardımcı olan INIT INFO parçaları da içeriyor - dpavlin


Debian için bir süreci doğru bir şekilde betimlemek için, kontrol sürecinden ayrılmak, IO'yu sıfırlamak ve güzel oynamak için bir işlem kimliği dosyası oluşturmak gibi birkaç adım atmanız gerekecektir. Bunun yerine sizin için bunu yapmak için aynı ad paketinden gelen bir program kullanabilirsiniz. Eğer yapmak istediğin buysa, cevap StackOverflow'ta bulunabilir: https://stackoverflow.com/questions/3095566/linux-daemonize

Kalkış komutu, Debian'ın invoke-rc.d komutuna veya sysvinit-utils paketinin servis komutuna daha yakındır. /Etc/init.d içinde init komut dosyalarından çalışmayı bekliyorlar. Debian'da paketiniz için bir tane oluşturmak için standarttır ve /etc/init.d/skeleton örneğinde gördüğünüz gibi start-stop-daemon programını kullanmasını sağlayın.

Sadece bir /etc/init.d/myservice komut dosyası oluşturduğunuzdan, otomatik olarak başlatılması gerektiği anlamına gelmez. Durdurulduğu çalışma seviyelerini ayarlayabilir ve güncelleme-rc.d gibi bir araç kullanarak otomatik olarak başlatabilirsiniz. Bu daha ayrıntılı olarak açıklanmıştır Bir hizmetin tüm çalışma seviyelerinden başlamasını engelleyin mi?


2
2018-04-09 19:15