You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ublinux-init/ublinux/rc.halt.pre/01-sysrq-sleepshutdown

71 lines
5.0 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#!/usr/bin/env bash
ENABLED=yes
[[ ${ENABLED} == "yes" ]] || exit 0
unset ROOTFS; [[ -d /usr/lib/ublinux ]] || ROOTFS=.
SOURCE=${ROOTFS}/usr/lib/ublinux/default; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0
SYSCONF="${ROOTFS}${SYSCONF}"
SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null
SOURCE=${SYSCONF}/save; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null
exec_sysrq_reboot(){
#Активизировать магические клавиши SysRq
echo 1 > /proc/sys/kernel/sysrq
[[ ${SYSTEMBOOT_STATEMODE} == "module" ]] && return 0
[[ -n ${SAVE_ALL_CACHE} ]] && return 0
[[ -n ${SAVE_ROOTCOPY_INCLUDE} || -n ${SAVE_ROOTCOPY_CHANGES} || -n ${SAVE_ROOTCOPY_EXCLUDE} ]] && return 0
[[ -n ${SAVE_MODULE_CHANGES} || -n ${SAVE_MODULE_INCLUDE} || -n ${SAVE_MODULE_EXCLUDE} ]] && return 0
echo
echo "The system will restart/shutdown after a maximum of 60 seconds"
echo
sleep 60 && echo b > /proc/sysrq-trigger &
}
## Возможности магических клавиш SysRq
## <r> Переключает клавиатуру в режим XLATE. Это может пригодиться
## в случаях, когда приложения, использующие raw-моду (например X-сервер)
## заканчивают свою работу аварийно. С помощью команды <r> можно вернуть
## клавиатуру в рабочее состояние.
## <k> Клавиша безопасного доступа (SAK -- Secure Access Key). Ядро
## убивает все процессы на текущей консоли. Вы можете использовать эту
## клавишу, что бы быть уверенным, что пароль не будет украден программой
## троянским конём. Если оригинальный login был подменён злоумышленником
## на троянского коня, то по команде <k> эта вредная программа будет
## убита и init запустит подлинный login.
## <b> Немедленно перезапускает систему, не предпринимая попыток
## синхронизации и демонтирования файловых систем. Эта команда может быть
## использована, если Вы не можете перезапустить систему иным путём. Но
## перед тем, как использовать команду <b> всё-таки рекомендуется подать
## команды <s> (синхронизация файловых систем) и <u> (перемонтирование
## файловых систем в режим "только для чтения").
## <o> Останавливает систему, если такая возможность предусмотрена в ядре.
## <s> Ядро производит попытку синхронизации файловых систем (т.е.
## записи на диске приводятся в соответствие с записями в кэше).
## <u> Ядро производит попытку перемонтирования файловых систем в
## режим "только для чтения" (ro).
## <p> Ядро выдаёт dump текущего состояния регистров CPU на текущую консоль.
## <t> Ядро выдаёт список текущих заданий и информацию о них на текущую консоль.
## <e> Всем процессам, кроме init, посылается сигнал SIGTERM.
## <i> Всем процессам, кроме init, посылается сигнал SIGKILL.
## <l> Всем процессам, включая и init, посылается сигнал SIGKILL.
## После этого система становится неработоспособна.
## <0>..<9> Устанавливает loglevel консоли. Т.е. регламентирует вывод
## диагностических сообщений на консоль. Однако, не зависимо от того,
## какой loglevel Вы установите для консоли, диагностические сообщения
## по-прежнему будут регистрироваться демонами syslogd/klogd.
## <h> На консоль выдаётся подсказка по магическим клавишам. На
## самом деле, любая клавиша, не нагруженная определённой функцией,
## выдаёт подсказку, но "h" легче запомнить.
################
##### MAIN #####
################
# Если файл подключен как ресурс с функциями, то выйти
return 0 2>/dev/null && return 0
exec_sysrq_reboot $@