Shutdown.sh
(M) |
Hulk (Diskussion | Beiträge) K (→Kategorie) |
||
| (13 dazwischenliegende Versionen von 8 Benutzern werden nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
Vorschlag für ein einfaches Shutdown-Skript. | Vorschlag für ein einfaches Shutdown-Skript. | ||
| − | Übergabe | + | ==Übergabe== |
| − | + | ||
-s [[Struktur|$PATH]]/shutdown.sh | -s [[Struktur|$PATH]]/shutdown.sh | ||
--shutdown=[[Struktur|$PATH]]/shutdown.sh | --shutdown=[[Struktur|$PATH]]/shutdown.sh | ||
| Zeile 8: | Zeile 7: | ||
Siehe auch [[VDR Optionen]]. | Siehe auch [[VDR Optionen]]. | ||
| − | + | ==shutdown.sh== | |
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
{{Box Datei | [[Struktur|$PATH]]/shutdown.sh | | {{Box Datei | [[Struktur|$PATH]]/shutdown.sh | | ||
<pre> | <pre> | ||
| Zeile 44: | Zeile 38: | ||
test -e $ACPIALARM | test -e $ACPIALARM | ||
case $? in | case $? in | ||
| − | 0) date -d "1970-01-01 UTC $((TIMER-120)) seconds" +"%Y-%m-%d %R:%S" > $ACPIALARM | + | 0) date -d "1970-01-01 UTC $(($TIMER-120)) seconds" +"%Y-%m-%d %R:%S" > $ACPIALARM |
sudo poweroff | sudo poweroff | ||
exit 0 | exit 0 | ||
| Zeile 53: | Zeile 47: | ||
;; | ;; | ||
10-nvram) | 10-nvram) | ||
| − | test -e /dev/nvram -a -e /dev/rtc -a -e /dev/mem | + | eval test $(echo $NVRAM_OPT | egrep -q directisa || echo "-e /dev/nvram -a") -e /dev/rtc -a -e /dev/mem |
case $? in | case $? in | ||
0) which nvram-wakeup >/dev/null 2>&1 | 0) which nvram-wakeup >/dev/null 2>&1 | ||
| Zeile 61: | Zeile 55: | ||
grub) REBOOT_LINE=`grep -s ^title "$GRUBCNF" | grep -i -n poweroff | { IFS=: read a b ; echo $a ; }` | grub) REBOOT_LINE=`grep -s ^title "$GRUBCNF" | grep -i -n poweroff | { IFS=: read a b ; echo $a ; }` | ||
test -n "$REBOOT_LINE" | test -n "$REBOOT_LINE" | ||
| − | + | case $? in | |
0) which grub-set-default >/dev/null 2>&1 | 0) which grub-set-default >/dev/null 2>&1 | ||
case $? in | case $? in | ||
| − | 0) sudo grub-set-default $((REBOOT_LINE-1)) | + | 0) which grubonce >/dev/null 2>&1 |
| + | case $? in | ||
| + | 0) sudo grubonce $((REBOOT_LINE-1)) | ||
| + | ;; | ||
| + | *) sudo grub-set-default $((REBOOT_LINE-1)) | ||
| + | ;; | ||
| + | esac | ||
;; | ;; | ||
*) echo -e "savedefault --default=$((REBOOT_LINE-1)) --once\nquit" | sudo grub --batch | *) echo -e "savedefault --default=$((REBOOT_LINE-1)) --once\nquit" | sudo grub --batch | ||
| Zeile 91: | Zeile 91: | ||
esac | esac | ||
;; | ;; | ||
| − | *) logger -t ${0##*/} "ARG -> missing /dev/nvram -o /dev/rtc -o /dev/mem" | + | *) logger -t ${0##*/} "ARG -> missing $(echo $NVRAM_OPT | egrep -q directisa || echo /dev/nvram -o) /dev/rtc -o /dev/mem" |
;; | ;; | ||
esac | esac | ||
| Zeile 120: | Zeile 120: | ||
}} | }} | ||
| − | ==[[NVRAM WakeUp]]== | + | ==[[NVRAM WakeUp]] (''reboot-kernel'')== |
shell> cd /tmp | shell> cd /tmp | ||
| − | shell> cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/nvram-wakeup login | + | shell> cvs -d:pserver:anonymous@nvram-wakeup.cvs.sourceforge.net:/cvsroot/nvram-wakeup login |
| − | shell> cvs | + | shell> cvs -d:pserver:anonymous@nvram-wakeup.cvs.sourceforge.net:/cvsroot/nvram-wakeup co nvram-wakeup/reboot |
Hier sollte sich ein passender ''Reboot-Kernel'' finden, welcher nach '''/boot''' verfrachtet wird. | Hier sollte sich ein passender ''Reboot-Kernel'' finden, welcher nach '''/boot''' verfrachtet wird. | ||
| Zeile 164: | Zeile 164: | ||
# Added pluto * | # Added pluto * | ||
# Added PowerOff | # Added PowerOff | ||
| + | |||
| + | Sollte bei der Ausführung von lilo -R innerhalb eines Shutdown-Skriptes oder -Hooks (wie bei Debian üblich) der Fehler "Fatal: chroot /dev/root: Not a directory" auftreten, so muss zusätzlich der Kommandozeilenparameter "-r /" angefügt werden.<br/> | ||
| + | Dies wurde bis jetzt nur bei Debian-Systemen beobachtet und trat nur dann auf, wenn das Init-Skript, welches den VDR startet, automatisch beim Systemstart ausgeführt wurde, nicht aber wenn man das Init-Skript aus einer Shell aufruft oder das Shutdown-Skript von Hand startet. | ||
| + | |||
| + | In obigem Skript müsste in diesem Fall die Zeile | ||
| + | sudo lilo -R $REBOOT_ENTRY | ||
| + | durch diese | ||
| + | sudo lilo -r / -R $REBOOT_ENTRY | ||
| + | ersetzt werden. | ||
| + | |||
| + | (lilo -R wurde in den bekannten Fällen nicht per sudo gestartet, möglicherweise tritt das Problem nicht bei der Verwendung von sudo auf.) | ||
| + | |||
| + | ==Quellen== | ||
| + | * ''shutdown.sh'' [[NVRAM WakeUp]] | ||
| + | * [http://www.hubertus-sandmann.homepage.t-online.de/vdr_wakeup.htm Hubertus Sandmann] | ||
[[Kategorie:Skripte]] | [[Kategorie:Skripte]] | ||
| + | [[Kategorie:Wakeup]] | ||
Aktuelle Version vom 6. Dezember 2008, 23:24 Uhr
Vorschlag für ein einfaches Shutdown-Skript.
Inhaltsverzeichnis |
[Bearbeiten] Übergabe
-s $PATH/shutdown.sh --shutdown=$PATH/shutdown.sh
Siehe auch VDR Optionen.
[Bearbeiten] shutdown.sh
#!/bin/bash
#
# shutdown.sh
# wake up method ('off','acpi','nvram','suspend')
WAKEUP_METHOD="off"
# read board configuration from specified configuration file (e.g: "/etc/nvram-wakeup.conf")
NVRAM_CONFIG=""
# specify the iw (infowriter) name. (e.g: gigabyte_5aa)
NVRAM_IWNAME=""
# try "nvram-wakeup --help"
NVRAM_OPT="--syslog"
# Which boot manager are you using? (grub/lilo)
BOOT_MANAGER="grub"
TIMER=$1
LILOCNF=/etc/lilo.conf
GRUBCNF=/boot/grub/menu.lst
ACPIALARM=/proc/acpi/alarm
case ${#TIMER}-${WAKEUP_METHOD:-off} in
10-acpi)
test -e $ACPIALARM
case $? in
0) date -d "1970-01-01 UTC $(($TIMER-120)) seconds" +"%Y-%m-%d %R:%S" > $ACPIALARM
sudo poweroff
exit 0
;;
*) logger -t ${0##*/} "ARG -> missing $ACPIALARM"
;;
esac
;;
10-nvram)
eval test $(echo $NVRAM_OPT | egrep -q directisa || echo "-e /dev/nvram -a") -e /dev/rtc -a -e /dev/mem
case $? in
0) which nvram-wakeup >/dev/null 2>&1
case $? in
0) sudo nvram-wakeup -s $TIMER $NVRAM_OPT ${NVRAM_CONFIG:+-C $NVRAM_CONFIG} ${NVRAM_IWNAME:+-I $NVRAM_IWNAME}
case ${BOOT_MANAGER:-lilo} in
grub) REBOOT_LINE=`grep -s ^title "$GRUBCNF" | grep -i -n poweroff | { IFS=: read a b ; echo $a ; }`
test -n "$REBOOT_LINE"
case $? in
0) which grub-set-default >/dev/null 2>&1
case $? in
0) which grubonce >/dev/null 2>&1
case $? in
0) sudo grubonce $((REBOOT_LINE-1))
;;
*) sudo grub-set-default $((REBOOT_LINE-1))
;;
esac
;;
*) echo -e "savedefault --default=$((REBOOT_LINE-1)) --once\nquit" | sudo grub --batch
;;
esac
;;
*) logger -t ${0##*/} "ARG -> missing poweroff entry in $GRUBCNF"
;;
esac
;;
lilo) REBOOT_ENTRY=`grep -s -i label.*poweroff "$LILOCNF" | { IFS== read a b ; echo $b ; }`
test -n "$REBOOT_ENTRY"
case $? in
0) sudo lilo -R $REBOOT_ENTRY
;;
*) logger -t ${0##*/} "ARG -> missing poweroff entry in $LILOCNF"
;;
esac
;;
esac
sudo shutdown -r now
exit 0
;;
*) logger -t ${0##*/} "ARG -> missing nvram-wakeup"
;;
esac
;;
*) logger -t ${0##*/} "ARG -> missing $(echo $NVRAM_OPT | egrep -q directisa || echo /dev/nvram -o) /dev/rtc -o /dev/mem"
;;
esac
;;
10-suspend)
test -e $ACPIALARM -a -e /sys/power/state
case $? in
0) date -d "1970-01-01 UTC $((TIMER-120)) seconds" +"%Y-%m-%d %R:%S" > $ACPIALARM
echo mem > /sys/power/state
sudo reboot
exit 0
;;
*) logger -t ${0##*/} "ARG -> missing $ACPIALARM -o /sys/power/state"
;;
esac
;;
10-off)
logger -t ${0##*/} "MESG -> no wakeup method"
;;
1-*)
logger -t ${0##*/} "MESG -> no timer"
;;
esac
sudo shutdown -h now
exit $?
[Bearbeiten] NVRAM WakeUp (reboot-kernel)
shell> cd /tmp shell> cvs -d:pserver:anonymous@nvram-wakeup.cvs.sourceforge.net:/cvsroot/nvram-wakeup login shell> cvs -d:pserver:anonymous@nvram-wakeup.cvs.sourceforge.net:/cvsroot/nvram-wakeup co nvram-wakeup/reboot
Hier sollte sich ein passender Reboot-Kernel finden, welcher nach /boot verfrachtet wird.
shell> KERNEL_VERSION=`uname -r`
shell> find $PWD -name "bzImage.${KERNEL_VERSION:0:3}*" -exec cp -v {} /boot/bzImage.poweroff \;
[Bearbeiten] Ergänzung für GRUB
[Bearbeiten] Ergänzung für LILO
Oder.
Dannach LILO aufrufen.
shell> lilo # Added pluto * # Added PowerOff
Sollte bei der Ausführung von lilo -R innerhalb eines Shutdown-Skriptes oder -Hooks (wie bei Debian üblich) der Fehler "Fatal: chroot /dev/root: Not a directory" auftreten, so muss zusätzlich der Kommandozeilenparameter "-r /" angefügt werden.
Dies wurde bis jetzt nur bei Debian-Systemen beobachtet und trat nur dann auf, wenn das Init-Skript, welches den VDR startet, automatisch beim Systemstart ausgeführt wurde, nicht aber wenn man das Init-Skript aus einer Shell aufruft oder das Shutdown-Skript von Hand startet.
In obigem Skript müsste in diesem Fall die Zeile
sudo lilo -R $REBOOT_ENTRY
durch diese
sudo lilo -r / -R $REBOOT_ENTRY
ersetzt werden.
(lilo -R wurde in den bekannten Fällen nicht per sudo gestartet, möglicherweise tritt das Problem nicht bei der Verwendung von sudo auf.)
[Bearbeiten] Quellen
- shutdown.sh NVRAM WakeUp
- Hubertus Sandmann