Shutdown.sh
Aus VDR Wiki
Version vom 22. April 2006, 16:59 Uhr von Anonymous (Diskussion | Beiträge)
Dieser Artikel wurde noch nicht komplett ins Deutsche übersetzt! (Übersetzung zu ~ 10 % durchgeführt.)
Das könntest auch Du machen, einfach per [bearbeiten]. Danach bitte
Das könntest auch Du machen, einfach per [bearbeiten]. Danach bitte
{{übersetzen|<Zahl>}}
aus dem Kopf des Artikels entfernen. DANKE :-)
Inhaltsverzeichnis |
Beschreibung
Aus INSTALL (VDR).
Automatic shutdown: ------------------- If you define a shutdown command via the '-s' command line option, VDR will call the given command if there is currently no recording or replay active, the user has been inactive for at least MinUserInactivity minutes and the next timer event is at least MinEventTimeout minutes in the future (see the Setup parameters in MANUAL). The command given in the '-s' option will be called with five parameters. The first one is the time (in UTC) of the next timer event (as a time_t type number), and the second one is the number of seconds from the current time until the next timer event. Your program can choose which one to use for programming some sort of hardware device that makes sure the computer will be restarted in time before the next timer event. Your program must also initiate the actual shutdown procedure of the computer. After this your program should return to VDR. VDR will not automatically exit after calling the shutdown program, but will rather continue normally until it receives a SIGTERM when the computer is actually shut down. So in case the shutdown fails, or the shutdown program for some reason decides not to perform a shutdown, VDR will stay up and running and will call the shutdown program again after another MinUserInactivity minutes. If there are currently no timers active, both parameters will be '0'. In that case the program shall not set the hardware for automatic restart and only perform the system shutdown. A program that uses the second parameter to set the hardware for restart must therefore also check whether the first parameter is '0'. The third parameter contains the number of the channel that will be recorded by the next timer (or 0 if no timer is present), and the fourth parameter contains the file name of the recording as defined in the timer (or an empty string if no timer is present). These can be used by the shutdown program to show that information on some display interface etc. The fifth parameter indicates the reason why the shutdown was requested. '0' means this is an automatic shutdown due to some timeout, while '1' means that this is a user requested shutdown (resulting from pressing the "Power" key). The shutdown program may use this information to decide whether or not to actually perform the system shutdown. If a timer is currently recording, the parameters will reflect the start time of that timer. This means that the first parameter will be a time in the past, and the second parameter will be a negative number. This only happens if the user presses the "Power" key while a timer is currently recording. Before the shutdown program is called, the user will be prompted to inform him that the system is about to shut down. If any remote control key is pressed while this prompt is visible, the shutdown will be cancelled (and tried again after another MinUserInactivity minutes). The shutdown prompt will be displayed for 5 minutes, which should be enough time for the user to react. A sample shell script to be used with the '-s' option might look like this: #!/bin/sh setRTCwakeup $(($1 - 300)) sudo halt Here 'setRTCwakeup' would be some program that uses the first parameter (which is the absolute time of the next timer event) to set the Real Time Clock so that it wakes up the computer 5 minutes (i.e. 300 seconds) before that event. The 'sudo halt' command then shuts down the computer. You will have to substitute both commands with whatever applies to your particular hard- and software environment. If the '-s' option is present, the VDR machine can be turned off by pressing the "Power" key on the remote control.
Beispiel
Vorschlag für ein einfaches Shutdown-Skript.
Übergabe.
-s $PATH/shutdown.sh --shutdown=$PATH/shutdown.sh
Siehe auch VDR Optionen.
Quellen:
- shutdown.sh NVRAM WakeUp
- Hubertus Sandmann
$PATH/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) test -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) sudo grub-set-default $((REBOOT_LINE-1)) ;; *) 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 /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 $?
NVRAM WakeUp
shell> cd /tmp shell> cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/nvram-wakeup login shell> cvs -z3 -d:pserver:anonymous@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 \;
Ergänzung für GRUB
Ergänzung für LILO
Oder.
Dannach LILO aufrufen.
shell> lilo # Added pluto * # Added PowerOff