PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : nach halt ein paar Sekunden bis zum Abschalten warten?



Federstrich
03.03.07, 10:24
Liebes Forum,

lässt es sich irgendwie einstellen, dass der Rechner beim Runterfahren ein paar Sekunden länger mit dem Abschalten wartet? Sozusagen erst halt und dann poweroff?

Ich habe nämlich das Gefühl, dass die Festplatte nicht ganz soweit ist, wenn Arch Linux den Stecker zieht.

Vielen Dank für Vorschläge und Anregungen

Federstrich

rkauskh
03.03.07, 11:50
Hi

Ich kenn Arch Linux nicht, vermute aber das es zum Herunterfahren ebenfalls ein Script a la *halt in /etc verwendet. Such dort mal nach einem Parameter "Sleep". Der sollte eigentlich generell schon vorhanden sein. Bei mir steht da Sleep=1 (vermutlich Sekunde?). Den Wert kann man dann erhöhen.

Federstrich
03.03.07, 12:01
Vielen Dank!

Ich habe mich gleich auf die Suche gemacht und folgende Datei gefunden /etc/rc.shutdown:


#!/bin/bash
#
# /etc/rc.shutdown
#

. /etc/rc.conf
. /etc/rc.d/functions

# avoid staircase effect
/bin/stty onlcr

echo " "
printhl "Initiating Shutdown..."
echo " "

# avoid NIS hanging syslog-ng on shutdown by unsetting the domainname
if [ -x /bin/domainname ]; then
/bin/domainname ""
fi

if [ -x /etc/rc.local.shutdown ]; then
/etc/rc.local.shutdown
fi

if [ "$PREVLEVEL" = "3" -o "$PREVLEVEL" = "5" ]; then
# Shutdown daemons
let i=${#DAEMONS[@]}
while [[ i -ge 0 ]]; do
if [[ `echo ${DAEMONS[$i]} | grep '^[^\!]' | wc -l` -eq 1 ]]; then
/etc/rc.d/${DAEMONS[$i]#@} stop
fi
let i=i-1
done
# find any leftover daemons and shut them down
if [ -d /var/run/daemons ]; then
for daemon in `ls /var/run/daemons`; do
/etc/rc.d/$daemon stop
done
fi
fi

# Terminate all processes
stat_busy "Sending SIGTERM To Processes"
/sbin/killall5 -15 &> /dev/null
/bin/sleep 5
stat_done

stat_busy "Sending SIGKILL To Processes"
/sbin/killall5 -9 &> /dev/null
/bin/sleep 1
stat_done

stat_busy "Saving Random Seed"
/bin/dd if=/dev/urandom of=/var/run/random-seed count=1 bs=512 2> /dev/null
stat_done

stat_busy "Saving System Clock"
if [ "$TIMEZONE" != "" -a -e /usr/share/zoneinfo/$TIMEZONE ]; then
/bin/rm -f /etc/localtime
/bin/cp /usr/share/zoneinfo/$TIMEZONE /etc/localtime
fi
if [ "$HARDWARECLOCK" = "UTC" ]; then
/sbin/hwclock --directisa --utc --systohc
else
/sbin/hwclock --directisa --localtime --systohc
fi
stat_done

# removing psmouse module to fix some reboot issues on newer laptops
modprobe -r psmouse >/dev/null 2>&1

# Write to wtmp file before unmounting
/sbin/halt -w

stat_busy "Deactivating Swap"
/sbin/swapoff -a
stat_done

stat_busy "Unmounting Filesystems"
/bin/umount -a
stat_done

# Kill non-root encrypted partition mappings
if [ -f /etc/crypttab -a -n "$(grep -v ^# /etc/crypttab | grep -v ^$)" ]; then
stat_busy "Deactivating encrypted volumes:"
CS=/sbin/cryptsetup.static
do_uncrypt() {
if [ $# -ge 3 ]; then
stat_append "${1}.."
$CS remove $1 >/dev/null 2>&1
if [ $? -ne 0 ]; then
stat_append "failed "
else
stat_append "ok "
fi
fi
}
while read line; do
eval do_uncrypt "$line"
done </etc/crypttab
stat_done
fi

if [ "$USELVM" = "yes" -o "$USELVM" = "YES" ]; then
if [ -d /etc/lvm -a -x /sbin/lvm ]; then
/bin/mount -n -t sysfs none /sys 2>/dev/null
if [ -d /sys/block ]; then
stat_busy "Deactivating LVM2 groups"
/sbin/lvm vgchange --ignorelockingfailure -an >/dev/null 2>&1
stat_done
umount /sys
fi
fi
fi

stat_busy "Remounting Root Filesystem Read-only"
/bin/mount -n -o remount,ro /
stat_done

# Power off or reboot
if [ "$RUNLEVEL" = "0" ]; then
printsep
printhl "${C_H2}POWER OFF"
/sbin/poweroff -d -f -h -i
else
printsep
printhl "${C_H2}REBOOTING"
# adding kexec support
[ -x /usr/sbin/kexec ] && /usr/sbin/kexec -e > /dev/null 2>&1
/sbin/reboot -d -f -i
fi

# End of file
# vim: set ts=2 noet:
Da sind gleich zwei Stellen vorhanden, wo sleep vorkommt (ich habe sie in rot markiert). Bevor ich damit mein System zerschieße, wollte ich doch nochmal nachfragen, wo genau ich die Änderungen vornehmen muss.

Dankeschön

Federstrich

rkauskh
03.03.07, 14:46
Hi

Das paßt schon so wie's ist. Die Laufwerke werden über umount ausgehängt und das klappt meines Wissens (außer vielleicht mit "force") nur wenn keine Schreibvorgänge mehr anstehen. Von daher ist ein zusätzlicher Sleep nicht notwendig.
Woran erkennst du denn eigentlich das deine Festplatte nicht fertig ist? Treten Datenverluste oder ähnliches auf? Das die Festplattenleuchte kurz vor dem Halt leuchtet könnte daran liegen das sie in den Stand-by-Modus fährt.
Wenn's unbedingt sein muß kannst du ein

/bin/sleep 5
nach der Zeile

printhl "${C_H2}POWER OFF"
setzen. Nur ob das an der Stelle noch funktioniert weiß ich nicht. Da frag mal lieber die Experten.

bla!zilla
03.03.07, 15:07
Mit was sollte die Platte nich soweit sein? Wie kommst zu der Vermutung?

kreol
03.03.07, 16:21
Nimm statt halt doch
shutdown -t 30 -h +1
-t sec Tell init(8) to wait sec seconds between sending processes the warning and the kill signal, before changing to another runlevel.
...
time When to shutdown.

The time argument can have different formats. First, it can be an absolute time in the format hh:mm, in which hh is the hour (1 or 2 digits) and mm is the minute of the hour (in two digits). Second, it can be in the format +m, in which m is the number of minutes to wait. The word now is an alias for +0.


Kreol

Federstrich
04.03.07, 20:02
Vielen Dank für die vielen Vorschläge!

@bla!zilla: Ich glaube, dass die Platte noch nicht ganz soweit ist, weil der Rechner beim Abschalten ein Geräusch produziert, genauso wie wenn ich unvermittelt den Stecker ziehe. Quasi so als hätte vor dem Abschalten kein "Spin down" der Festplatte statt gefunden.
Man kann das deutlich hören und deshalb wollte ich mal nachfragen, ob da alles in Ordnung ist, bevor ich die Hardware schädige.

Ich werde gleich alles ausprobieren und dann posten, ob und wie es geklappt hat.

Einen schönen Sonntagabend.

Federstrich