Ich habe das Skript, das für das Senden des Kill-Signals verantwortlich ist, mit der zugewiesenen Verzögerung /etc/init.d/sendsigs geändert und die Zeit reduziert, die erforderlich ist, um die verbleibenden Prozesse in 2 Iterationen abzubrechen. Gesund oder nicht, es erledigt die Arbeit auf meinem System und hängt nicht mehr beim Herunterfahren und Neustarten.
Unten finden Sie einen Teil der Datei /etc/init.d/sendsigs mit Änderungen, die durch # <--- gekennzeichnet sind:
# Kill all processes.
log_action_begin_msg "Asking all remaining processes to terminate"
killall5 -15 $OMITPIDS # SIGTERM
log_action_end_msg 0
alldead=""
OMITPIDS0="$OMITPIDS"
#for seq in 1 2 3 4 5 6 7 8 9 10; do # this is the original line
for seq in 1 2; do # <--- the above line is replaced by this one.
dann im unteren Teil des Skripts:
# Upstart has a method to set a kill timeout and so the job author
# may want us to wait longer than 10 seconds (as in the case of
# mysql). (LP: #688541)
#
# We will wait up to 300 seconds for any jobs in stop/killed state.
# Any kill timeout higher than that will be overridden by the need
# to shutdown. NOTE the re-use of seq from above, since we already
# waited up to 10 seconds for them.
while [ -n "$(upstart_killed_jobs)" ] ; do
seq=$(($seq+1))
#if [ $seq -ge 300 ] ; then # this is the original line
if [ $seq -ge 2 ] ; then # <--- I can't wait for another 300 iteration
break
fi
ANMERKUNG: Dies ist möglicherweise nicht die beste Lösung, da das ursprüngliche Skript auf anderen Systemen funktioniert. Für Systeme wie meine, auf denen mehrere Lösungsvorschläge nicht zutrafen, kann ich dies teilen, wenn ich das System nur als Workstation mit der Nr. 1 ausführe kritische Dienste, die ausgeführt werden, nachdem alle von mir verwendeten Desktopanwendungen geschlossen wurden, bevor Sie auf das Symbol zum Herunterfahren oder Neustarten klicken.
Das verwendete System ist ein Asus X550DP-Laptop.
sudo shutdown -h now
und sehen, ob es voll abschaltet.