2014-07-09 15 views
5

Bir daemon bir canlı bir init.d kabuk betiği tarafından başlatılmış tutmak için standart bir yol veya en iyi uygulama arıyorum.Canlı ya da en iyi yol canlı işlem tutmaya init.d tarafından başlatıldı

Veya daha da iyisi, onu doğrudan /etc/init.d'dan canlı tutmanın bir yolu var mı?

Spesifik olarak, dtnd adı verilen bir arka plan programı var ve eğer varsa aşağıdan aşağıya bakan sonsuz döngü var. Ayrıca, belirli bir sistem kullanıcısı tarafından çalıştırmayı başlatmak için start-stop-daemon aracını kullanıyorum.

Bu dtnd daemon'u başlangıçtan çalıştırmak istiyorum. Bu davranışı elde etmek için, start, stop ve durum komutlarını kullanarak dtnd dosyasını "saran" bir init.d betiği yarattım.

ben çözmek gibi olacak 2 soru var:

  1. kabuk init.d. bazı sürecini canlı tutmak ulaşmak için bir yol var mı. Standart/en iyi yöntem nedir?

  2. Bir daemon sonsuz döngü ile canlı tutmak için tavsiye edilir? Bunu başarmak için bir araç gibi bir araç kullanmak daha iyi olur. Bu doğru?

Zaman ayırdığınız için çok teşekkürler!

+0

Merhaba Bohemian, Haklısınız. Ancak çalıştırılacak süreç C dilinde yazıldığından, bu soru stackoverflow'a uyuyor. Her neyse, bunu Sunucu Arızası'nın adamlarına soracağım. –

cevap

2

daemon(3) kitaplık işlevini daemonunuzun kodunun içinde kullanmak isteyebilirsiniz. syslog(3)'un farkında olmalısınız (en azından hata koşullarını günlüğe kaydetmek için). Muhtemelen SIGTERM sinyalini dikkatlice yakalamalısınız. Dikkatlice okunabilir. signal(7)

Sunucu programları genellikle event loop tabanlıdır (ve kavramsal olarak sonsuz bir döngüdür). Sen varolan olay döngü kütüphanesinde tr kullanmak (örn libev, libevent, glib, ...) veya poll(2)

okuyun Advanced Linux Programming gibi bir çoklayıcı sistem çağrısı etrafında kendi birini inşa etmek ve mevcut bazı özgür yazılım cini kaynak kodunu çalışma olacak ya .

Belki dbus da hedefleriyle alakalı olduğunu (gerçekten anlamıyorum hangi:? Ne "aşağı süreç arar" tam anlamı Sık sık bazı .bashrc içinde yerleşik ulimit bash aracılığıyla çağrılan setrlimit(2) ile ilgili belirli sınırlamalar olabilir)

crontab(5) için @reboot girişi de vardır, ancak bu sistem uygulamaları için önerilen bir uygulama değildir (ancak, kullanıcı crontab dosyasında kullanabilirsiniz).

+0

Bilgi için teşekkürler! Dikkatle kontrol edeceğim. –