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.
debian
daemon
debian-lenny
upstart
Kuroki Kaze
źródło
źródło
Odpowiedzi:
Możesz utworzyć demona ręcznie, postępując zgodnie z
/etc/init.d/skeleton
plikiem na Debianie.Możesz użyć
/usr/bin/service
do uruchomienia$ sudo service yourdaemon start
i zatrzymania$ sudo service yourdaemon stop
demona.Dopóki nie podłączysz skryptu do żadnego z
/etc/rc?.d
katalogó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.
źródło
/usr/bin/service
w systemie (to Debian Lenny), ale mogę uruchamiać skrypty bezpośrednio/etc/init.d/myservice start
.sudo invoke-rc.d yourservice start
takżeDebian (i Ubuntu) mają program pomocniczy,
start-stop-daemon
któ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źródło
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?
źródło