#linux #bash #linux-kernel #reboot
#linux #bash #linux-ядро #перезагрузка
Вопрос:
Я прочитал здесь, что с помощью приведенной ниже команды мы можем имитировать жесткую перезагрузку в системе Linux:
echo 1 > /proc/sys/kernel/sysrq
echo b > /proc/sysrq-trigger
Но я хотел добавить некоторую функцию программной перезагрузки перед выполнением приведенной выше команды, такой как SIGTERM
, SIGKILL
и т.д., Которые выдаются при программной перезагрузке. Кто-нибудь может подсказать, как я могу это сделать, используя bash или C / C . Также, какие шаги выполняются при выполнении программной перезагрузки в системе Linux?
Ответ №1:
Имитация или использование последовательностей клавиш SysRq для запуска программной перезагрузки в большинстве ситуаций не требуется, вместо этого вы можете просто использовать reboot
команду в bash. В программе на языке Си я бы использовал system("reboot");
. Конечно, вам нужно быть root, чтобы перезагрузить компьютер.
Редактировать: Если вы хотите вызвать эти команды после необходимой очистки программной перезагрузки, ваш лучший вариант, вероятно, вызвать самостоятельно соответствующие сценарии перезагрузки в /etc/rc6.d
.
Это зависело бы от дистрибутива, на debian или ubuntu это выглядело бы так:
/etc/rc6.d/S20sendsigs
/etc/rc6.d/S40umountfs
/etc/rc6.d/S60umountroot
Вы можете выбрать сценарии, которые, по вашему мнению, необходимы (создание сетей, уничтожение демонов …).
Комментарии:
1. Я не хочу выполнять мягкую перезагрузку, но хочу убедиться, что фоновая работа, выполняемая перед перезагрузкой, завершена и что я хочу вызвать вышеуказанные 2 команды для выполнения жесткой перезагрузки.