Ich habe einen Cronjob in einem Andockcontainer ausgeführt, der prüft, ob alle Dienste wie erwartet ausgeführt werden. Wenn dieser Cronjob feststellt, dass ein Problem vorliegt, möchte ich den Andock-Container stoppen (von innen ...)
Leider stoppt exit
nur mein Cronjob-Skript
Grundsätzlich müssen Sie PID 1 beenden, um den Container zu stoppen.
Ich dachte anfangs, dass kill -s SIGKILL 1
funktionieren würde, aber PID 1 ist geschützt, also nicht.
Wie von @Thomasleveil vorgeschlagen, könnten Sie Code wie trap "exit" SIGINT SIGTERM
zum PID 1-Skript hinzufügen, was bedeutet, dass der Prozess beendet wird, wenn eine kill -s SIGINT 1
gesendet wird. Ich bevorzuge diese Methode etwas zu der, die Sie entwickelt haben (den Kindprozess direkt zu töten), da sie dem Elternprozess eine Möglichkeit zum Aufräumen gibt und auch der Elternprozess die PID des Kindprozesses ohne awk finden kann / p>
Wenn Sie jedoch mehrere Prozesse ausführen, sollten Sie etwas wie supervisord oder runit in Erwägung ziehen.
Ich habe versucht, Prozess 1 ohne Erfolg zu beenden.
Probieren Sie den Kommentar von @ zero323 mit shutdown -h now
aus. Es funktioniert gut (sorry, ich kann nicht direkt dafür stimmen, da es nicht in der Liste der Antworten ist).
Tags und Links docker