Документация по sysrq
находится в исходном коде linux (https://github.com/torvalds/linux/blob/master/Documentation/sysrq.txt).
Я очень рекомендую вам прочитать ее.
Во-первых, убедитесь, что использование волшебного ключа SysRq включено:
$ cat /proc/sys/kernel/sysrq
1
Если там написано 0
, значит SysRq отключен. Вы можете включить его с помощью:
$ echo 1 > /proc/sys/kernel/sysrq
И он начнет действовать немедленно. Включение магического ключа связано с безопасностью, и на сайте TLDP есть хорошая документация.
Основано на некоторых раскладках клавиатуры, найденных в Википедии. Вы можете попробовать комбинацию PrtScr / Print Screen.
В моей системе: Alt + PrtScr + "OTHER". Это та же последовательность, что описана в этой статье Википедии.
Вы можете запустить showkey
для сканирования кодов / получения сканкодов:
$ showkey -s
0x38 - i'm pressing Alt
0xb8 - releasing Alt
0xe0 0x2a 0xe0 0x37 - print screen
0xe0 0xaa 0xe0 0xb7 - release print screen
0x38 - i'm pressing Alt
0x54 - i'm also pressing print screen
0x23 - letter H
0xa3 - bye bye letter H
0xd4 - releasing print screen
0xb8 - releasing Alt
0x54
= 84 будет Alt+PrtScr, который становится SysRq.
Давайте подтвердим это:
$ getkeycodes
Plain scancodes xx (hex) versus keycodes (dec)
for 1-83 (0x01-0x53) scancode equals keycode
0x50: 80 81 82 83 99 0 86 87
0x58: 88 117 0 0 95 183 184 185
0x60: 0 0 0 0 0 0 0 0
0x68: 0 0 0 0 0 0 0 0
...
Моя система сопоставляет этот сканкод 0x54
с кодом 99
, который является KEY_SYSRQ
.
Двойная проверка:
# rpm -ql kernel-headers | grep input.h | xargs grep KEY_SYSRQ
/usr/include/linux/input.h:#define KEY_SYSRQ 99
Alt + PrtScr + D - это плохая комбинация для моей системы и выдает мне справку
SysRq : HELP : loglevel(0-9) reBoot Crash terminate-all-tasks(E)
memory-full-oom-kill(F) kill-all-tasks(I) thaw-filesystems(J) saK
show-backtrace-all-active-cpus(L) show-memory-usage(M) nice-all-RT-tasks(N)
powerOff show-registers(P) show-all-timers(Q) unRaw Sync show-task-states(T)
Unmount show-blocked-tasks(W) dump-ftrace-buffer(Z)
Alt + PrtScr + H - фактическое нажатие клавиши help
SysRq : HELP : loglevel(0-9) reBoot Crash terminate-all-tasks(E)
memory-full-oom-kill(F) kill-all-tasks(I) thaw-filesystems(J) saK
show-backtrace-all-active-cpus(L) show-memory-usage(M) nice-all-RT-tasks(N)
powerOff show-registers(P) show-all-timers(Q) unRaw Sync show-task-states(T)
Unmount show-blocked-tasks(W) dump-ftrace-buffer(Z)
sync
все смонтированные файловые системыЕсли у вас есть задание anacron
, выполняющее ежедневное резервное копирование, и ваша система не работает в течение трех дней, anacron
запустит задание один раз , когда система подключится к сети на четвертый день.
Чтобы уточнить, anacron
позволяет указать команды, которые будут периодически повторяться с частотой, указанной в днях. При вызове anacron
(, что может произойти во время загрузки, а также в заранее определенные часы дня ), он считывает список заданий из конфигурационного файла /etc/anacrontab
. Для каждого задания anacron
проверяет, выполнялось ли задание за последние n дней. Для ежедневной работы это будет последний 1 день, т.е. сегодня. Если задание не запускалось в течение этого периода, anacron выполняет задание.
После завершения задания anacron
записывает дату выполнения в файл под /var/spool/anacron
. Этот файл используется для проверки состояния задания при вызове anacron на следующий день.
Поскольку anacron
учитывает только количество дней, прошедших с момента последнего выполнения, и сконфигурированную частоту выполнения, нет проблемы многократного выполнения задания.
Ежедневное задание anacron можно настроить в файле конфигурации /etc/anacrontab
с использованием следующего синтаксиса:
1 15 backup-job /path/to/backup/script.sh
1 — частота выполнения команды, указанная в днях, 15 — задержка в минутах, добавляемая к выполнению задания, «backup -job» — идентификатор, а «/path/to/backup/script.sh' — это команда, которую нужно выполнить. Подробнее см.man 8 anacron
и man 5 anacrontab
.
Таким образом, лучшее, что вы можете сделать, это создать файл блокировки при запуске резервного копирования и удалить его в конце скрипта. Конечно, перед созданием вы должны проверить, существует ли файл блокировки, и просто остановить скрипт, если да. Будьте осторожны, проверяйте, когда сценарий уничтожается извне, а файл блокировки все еще существует.