Debian'da daemon yapmanın “standart” bir yolu var mı?


17

Debian uygulamadan bir daemon oluşturmak gerekiyor. Debian'da bunun için Ubuntu'daki "uptart" gibi standart bir araç var mı? Bazı seçenekler ve bir pid dosyası ile bir programı olarak bir programı başlatmak ve pid dosyası ile öldürmek için, sadece start-stop komutlarına ihtiyacım var.

İnit.d'e baktım ama önyükleme zamanı lansmanı için bu görünüyor. Ben arka planımı manuel olarak başlatmak istiyorum.


2
Bu, varsayılanı sysvinit'ten systemd'ye geçiren debian jessie için değiştiğini unutmayın.
Jules

debian jessie, en azından / usr / bin / service kullanarak bir çeşit geriye dönük uyumluluğa sahip gibi görünmektedir - uptart config (/etc/init/{service {.conf) ve bir sysvinit config (/ etc / init) varsa. d / {service}), daha sonra / usr / bin / service, sysvinit altında olduğu gibi /etc/init.d/{service} ile etkileşime girer.
Kevin

Yanıtlar:


18

/etc/init.d/skeletonDebian'daki dosyayı izleyerek daemon'unuzu manuel olarak oluşturabilirsiniz .

Daemon'unuzu /usr/bin/servicebaşlatmak $ sudo service yourdaemon startve durdurmak $ sudo service yourdaemon stopiçin kullanabilirsiniz .

Komut dosyanızı herhangi bir /etc/rc?.ddizine bağlamadığınız sürece, başlangıçta çalışmaya başlamaz.

Öte yandan, debian'da standart olmayan ancak bazı ilginç özelliklere sahip daemontools'a bakmak isteyebilirsiniz .


Teşekkürler. /usr/bin/serviceSistemimde yok gibi görünüyor (Debian Lenny), ancak komut dosyalarını doğrudan ile başlatabilirim /etc/init.d/myservice start.
Kuroki Kaze

3
Sen kullanabilirsiniz sudo invoke-rc.d yourservice startyanı
chmeee

bilmiyordum. Thx
chiggsy

3

Debian (ve Ubuntu) start-stop-daemon, init komut dosyalarında kullanılan yardımcı programa sahiptir. Arka plan programlarını başlatmak ve izlemek için birkaç seçeneği vardır. Basitçe etrafına 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
Yukarıda önerilen /etc/init.d/skeleton'u tercih ederim, çünkü bağımlılık önyüklemesine geçişe yardımcı olan INIT INFO parçalarını da içeriyor
dpavlin

2

Debian için bir işlemi düzgün bir şekilde arka plana aktarmak için kontrol işleminden uzaklaşmak, IO'yu sıfırlamak ve güzel oynamak için bir işlem kimliği dosyası oluşturmak da dahil olmak üzere birkaç adım atmanız gerekir. Bunun yerine, aynı adı taşıyan paketten daemon programı gibi bir şey kullanabilirsiniz. Yapmak istediğiniz buysa, yanıt burada StackOverflow'da bulunabilir: /programming/3095566/linux-daemonize

Uptart komutu Debian'ın invoke-rc.d komutuna veya sysvinit-utils paketindeki service komutuna çok benzer. /Etc/init.d içindeki init betiklerinden çalışmayı bekliyorlar. Paketiniz için bunlardan birini oluşturmak ve /etc/init.d/skeleton örneğinde gördüğünüz gibi start-stop-daemon programını kullanması Debian'da standarttır.

Bir /etc/init.d/myservice komut dosyası oluşturmanız, otomatik olarak başlaması gerektiği anlamına gelmez. Update-rc.d gibi bir araç kullanarak durduğu ve otomatik olarak başladığı çalışma düzeylerini ayarlayabilirsiniz. Bu, bir hizmetin tüm çalışma düzeylerinde başlatılmasını devre dışı bırakma konusunda daha ayrıntılı olarak açıklanmaktadır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.