
Если я хочу выключить свою систему через 30 минут с помощью telinit, как я могу это сделать? Я знаю, что с shutdown проще, но просто для того, чтобы знать это.
решение1
С использованиемat
:
at now + 30 minutes <<<'telinit 0'
Или используйте sleep 30m; telinit 0
.
telinit
сам по себе не может этого сделать. Вам придется использовать другие инструменты в сочетании. at
и sleep
оба позволяют отменить операцию (с atrm
for at
и CtrlCfor другой).
решение2
# telinit 0
Уровень выполнения 0 — это режим остановки. Если указать init перейти на уровень выполнения 0, все процессы будут завершены, файловые системы размонтированы, а машина остановлена. Это вполне приемлемый способ остановить систему. На многих ноутбуках и современных настольных компьютерах это также приведет к выключению машины.Источник
Дополнительно на случай, если кто-то задумается о перезагрузке:
# telinit 6
Уровень запуска 6 — режим перезагрузки. Все процессы будут завершены, файловые системы будут размонтированы, а машина перезагружена. Это вполне приемлемый метод перезагрузки системы.Источник
Для выполнения чего-либо в будущем у нас есть команда "at". Это будет:
# at now+30 minutes <<<'telinit 0'
или спать:
# sleep 1800 && telinit 0
(1800 секунд)
решение3
Как предложение, не отвечая на ваш вопрос напрямую. Даже at
команда не установлена по умолчанию и sleep
с telinit является отличным выбором: Если вы хотите попробовать другой инструмент, крометелинит, вы можете попробоватьперезагрузитьсв:
echo reboot | at now +30 m