Czy istnieje „standardowy” sposób na wykonanie demona w Debianie?


17

Muszę utworzyć demona z aplikacji w Debianie. Czy jest jakieś standardowe narzędzie do tego w Debianie, takie jak „upstart” w Ubuntu? Potrzebuję tylko poleceń start-stop, aby uruchomić program jako demon z kilkoma opcjami i plikiem pid i zabić go za pomocą pliku pid.

Spojrzałem na init.d, ale wygląda na to, że są one przeznaczone do uruchomienia podczas rozruchu. Chcę uruchomić mojego demona ręcznie.


2
Zauważ, że zmieniło się to dla Debiana Jessie, który zmienił domyślną z sysvinit na systemd.
Jules,

debian jessie wydaje się mieć jakąś formę wstecznej kompatybilności, przynajmniej używając / usr / bin / service - jeśli nie ma konfiguracji upstart (/etc/init/{service}.conf) i jest konfiguracja sysvinit (/ etc / init). d / {service}), następnie / usr / bin / service będzie współpracować z /etc/init.d/{service} jak poprzednio w sysvinit.
Kevin

Odpowiedzi:


18

Możesz utworzyć demona ręcznie, postępując zgodnie z /etc/init.d/skeletonplikiem na Debianie.

Możesz użyć /usr/bin/servicedo uruchomienia $ sudo service yourdaemon starti zatrzymania $ sudo service yourdaemon stopdemona.

Dopóki nie podłączysz skryptu do żadnego z /etc/rc?.dkatalogów, nie uruchomi się on podczas uruchamiania.

Z drugiej strony możesz chcieć przyjrzeć się demonom , które nie są standardem w Debianie, ale mają kilka interesujących funkcji.


Dzięki. Wygląda na to, że nie mam go /usr/bin/servicew systemie (to Debian Lenny), ale mogę uruchamiać skrypty bezpośrednio /etc/init.d/myservice start.
Kuroki Kaze

3
Można użyć sudo invoke-rc.d yourservice starttakże
chmeee

nie wiedział tego. Thx
chiggsy

3

Debian (i Ubuntu) mają program pomocniczy, start-stop-daemonktóry jest używany w skryptach inicjujących. Ma wiele opcji uruchamiania i śledzenia demonów. Możesz po prostu napisać wokół niego opakowanie, np

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
Wolę /etc/init.d/skeleton sugerowany powyżej, ponieważ zawiera on również części INIT INFO, które pomagają w migracji do uruchamiania zależnego
dpavlin

2

Aby poprawnie zdemonizować proces dla Debiana, musisz wykonać kilka kroków, w tym zrezygnować z procesu kontrolowania, zresetować IO i utworzyć plik identyfikatora procesu, aby grać dobrze. Zamiast tego możesz użyć czegoś takiego jak program demona z pakietu o tej samej nazwie, aby to zrobić za Ciebie. Jeśli to właśnie chcesz zrobić, odpowiedź można znaleźć tutaj na StackOverflow: /programming/3095566/linux-daemonize

Polecenie upstart jest bardziej podobne do polecenia invoke-rc.d Debiana lub polecenia service z pakietu sysvinit-utils. Oczekują, że zadziałają skrypty init w /etc/init.d. Debian jest standardem w tworzeniu jednego z tych pakietów i używania go w programie start-stop-daemon, jak widać w przykładzie /etc/init.d/skeleton.

To, że tworzysz skrypt /etc/init.d/myservice, nie oznacza, że ​​musi on zostać uruchomiony automatycznie. Możesz dostosować poziomy uruchamiania, przy których się zatrzymuje i uruchamia automatycznie, za pomocą narzędzia takiego jak update-rc.d. Jest to opisane bardziej szczegółowo w temacie Wyłączanie usługi od uruchamiania na wszystkich poziomach pracy?

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.