Ich muss einen Daemon aus der Anwendung in Debian erstellen. Gibt es ein Standardwerkzeug dafür in Debian wie "upstart" in Ubuntu? Ich brauche nur Start-Stopp-Befehle, um ein Programm als Daemon mit einigen Optionen und einer PID-Datei zu starten und es mit einer PID-Datei zu beenden.
Ich habe mir init.d angesehen, aber es sieht so aus, als ob dies zum Booten gedacht ist. Ich möchte meinen Daemon manuell starten.
debian
daemon
debian-lenny
upstart
Kuroki Kaze
quelle
quelle
Antworten:
Sie können Ihren Daemon manuell erstellen, indem Sie der
/etc/init.d/skeleton
Debian-Datei folgen .Mit können Sie Ihren Daemon
/usr/bin/service
starten$ sudo service yourdaemon start
und stoppen$ sudo service yourdaemon stop
.Solange Sie Ihr Skript nicht mit einem der
/etc/rc?.d
Verzeichnisse verknüpfen , wird es beim Start nicht gestartet.Auf der anderen Seite möchten Sie sich vielleicht Daemontools ansehen , die nicht zum Standard von Debian gehören , aber einige interessante Funktionen haben.
quelle
/usr/bin/service
auf meinem System (es ist Debian Lenny), aber ich kann Skripte direkt mit starten/etc/init.d/myservice start
.sudo invoke-rc.d yourservice start
auchDebian (und Ubuntu) haben das Hilfsprogramm,
start-stop-daemon
das in den Init-Skripten verwendet wird. Es gibt einige Optionen, um Dämonen zu starten und zu verfolgen. Sie können einfach einen Wrapper darum schreiben, zquelle
Um einen Prozess für Debian ordnungsgemäß zu dämonisieren, müssen Sie mehrere Schritte ausführen, einschließlich des Verzweigens aus dem Steuerungsprozess, des Zurücksetzens der E / A und des Erstellens einer Prozess-ID-Datei, um nett zu spielen. Sie können stattdessen so etwas wie das Daemon-Programm aus dem gleichnamigen Paket verwenden, um dies für Sie zu tun. Wenn Sie dies möchten, finden Sie die Antwort hier auf StackOverflow: /programming/3095566/linux-daemonize
Der Befehl upstart ähnelt eher Debians Befehl invoke-rc.d oder dem Befehl service aus dem Paket sysvinit-utils. Sie erwarten, dass sie mit Init-Skripten in /etc/init.d arbeiten. Es ist Standard in Debian, eines davon für Ihr Paket zu erstellen und es das Programm start-stop-daemon verwenden zu lassen, wie Sie im Beispiel /etc/init.d/skeleton sehen können.
Nur weil Sie ein Skript /etc/init.d/myservice erstellen, muss es nicht automatisch gestartet werden. Mit einem Tool wie update-rc.d können Sie die Runlevel anpassen, bei denen es automatisch stoppt und startet. Dies wird unter Deaktivieren des Startens eines Dienstes auf allen Runlevels ausführlicher beschrieben .
quelle