Was ist das richtige, um ein Skript mit start-stop-daemon zu beenden?


0

Ich verwende einen Start-Stop-Daemon, um ein INIT-Skript für mein Skript zu erstellen. Ich verwende --make-pidfile, weil mein Skript keine eigene PID erstellt. Ich kann mein Skript mit start starten und die PID-Datei mit der entsprechenden PID erstellen. Aber die Stoppfunktion funktioniert nicht. Wie im Start-Stop-Daemon-Handbuch beschrieben,

--stop Überprüft, ob ein bestimmter Prozess vorhanden ist. Existiert ein solcher Prozess, sendet der Start-Stop-Daemon das durch --signal angegebene Signal und beendet das Programm mit dem Fehlerstatus 0. Existiert ein solcher Prozess nicht, beendet der Start-Stop-Daemon das Programm mit dem Fehlerstatus 1 (0, wenn - -oknodo ist angegeben). Wenn --retry angegeben ist, prüft start-stop-daemon, ob die Prozesse beendet wurden.

Ich habe keine Dokumentation für --signal selbst gefunden. Wie spezifiziere ich --signal, wenn ich ein SIGTERM senden möchte?

case "$1" in
  start|debug)
        log_daemon_msg "Starting $DESC: $NAME"
        start-stop-daemon --start --quiet --background --make-pidfile --pidfile $PIDFILE \
                --exec $DAEMON || log_failure_msg " already running"
        log_end_msg 0
        ;;
  stop)
        log_daemon_msg "Stopping $DESC: $NAME"
        start-stop-daemon --oknodo --stop --quiet --pidfile $PIDFILE \
                --exec $DAEMON
        log_end_msg 0
        ;;

Antworten:


1

Mit können --signalSie numerische Werte oder den Namen des Signals ohne das SIGTeil verwenden, z --signal TERM.

Nicht --exec $DAEMONbeim Stoppen verwenden, da dies nicht funktioniert, wenn Sie versuchen, den Dämon zu stoppen, nachdem Sie die ausführbare Datei im Rahmen eines Upgrades ersetzt haben: Die ausführbare Datei stimmt nicht mit dem laufenden Prozess überein, sodass sie nicht gestoppt wird . Wenn Sie alternativ darauf bestehen --exec, stoppen Sie den Dämon, bevor Sie die ausführbare Datei ersetzen.

Wenn die erstellte PID-Datei nicht mit dem Prozess des Dämons übereinstimmt, tritt wahrscheinlich auch der Dämon selbst in den Hintergrund. Wenn dies der Fall ist, prüfen Sie, ob der Dämon eine Option zum Verhindern dieses Hintergrunds hat, da dies start-stop-daemonbereits erledigt wird. Wenn dies nicht möglich ist, verwenden Sie nicht die Option pidfile und verlassen Sie sich auf --exec(siehe jedoch den vorherigen Abschnitt zum Aktualisieren).

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.