Öldürme sinyalini tahsis edilen gecikme, /etc/init.d/sendsigs ile göndermekten sorumlu olan betiği değiştirdim ve 2 yinelemede kalan işlemleri öldürmek için gereken süreyi azalttım. Sağlıklı ya da değil işimi sistemime alır ve artık kapatma ve yeniden başlatma asılı değil.
Aşağıda, #et --- ile belirtilen /etc/init.d/sendsigs öğesinin bir bölümü verilmiştir:
# 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.
sonra komut dosyasının alt kısmında:
# 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
NOT: Orijinal komut dosyası diğer sistemler üzerinde çalıştığı için bu, en iyi çözüm olmayabilir, benim gibi birkaç önerilen çözümün uygulanmadığı sistemler için - sistemi yalnızca bir iş istasyonu olarak çalıştırdığımı düşünerek paylaşabilirim. kapatma veya yeniden başlatma simgesine tıklamadan önce kullandığım tüm masaüstü uygulamalarını kapattıktan sonra çalışan kritik hizmetler.
Kullanılan sistem bir Asus X550DP dizüstü bilgisayardır.
sudo shutdown -h now
tam kapanıp kapanmadığını görebilirsiniz.