Скрипт выключения не работает так, как написано

Я новичок в Linux. Я написал очень простой сценарий для выключения моего компьютера, написанный так:

!#/bin/bash
echo "Hello World"
sudo shutdown

Когда я выполняю этот код, он запускает расписание выключения, обычно на минуту или около того вперед, хотя мой сценарий не предусматривает планирования, вместо этого я хочу немедленно выключить систему. Я хотел бы знать, является ли это функцией моего скрипта или Linux, и что я могу сделать, чтобы исправить мой скрипт, чтобы он выключался мгновенно.

0
02.07.2017, 01:41
2 ответа

Лучше всего ввести каждую из ваших команд в терминал, чтобы проверить, что будет делать команда. В вашем случае, я думаю, вы хотите использовать следующее:

shutdown now
0
28.01.2020, 04:44

В сценарии необходимо решить три проблемы.

Во-первых, это опечатка в строке shebang. правильный синтаксис для такой строки: #!/путь/к/интерпретатору -параметры и аргументы. Он должен начинаться с первого символа первой строки и заканчиваться новой строкой. bashявляется приемлемой оболочкой для сценариев (, хотя в данном случае это может быть излишним ), поэтому после исправления первых двух символов это будет приемлемо, но пара вариантов может быть полезна. -eзавершает работу при любой ошибке, заставляя вас писать лучшие сценарии, а -xпоказывает, что делает оболочка на каждом этапе, хотя в этом случае ни один из них не обнаружил бы проблемы.

Две наиболее распространенные ошибки при завершении работы — это время и вид отключения, и, похоже, вы столкнулись с обеими из них. Основная функция Shutdown — выключение за один раз. Есть три способа указать абсолютное время, относительное и now. Now — это псевдоним +0, что означает ноль секунд с этого момента и чаще всего требуется в однопользовательских системах. Другой основной особенностью Shutdown является то, что он поддерживает несколько типов завершения работы, например, остановку, отключение питания и перезагрузку, но, поскольку завершение работы предшествует автоматическому управлению питанием, по умолчанию выполняется завершение работы в однопользовательском режиме.Раньше его использовали, чтобы после того, как вы отключили всех пользователей, вы могли синхронизировать, размонтировать и проверить файловые системы, прежде чем фактически отключить систему. Это также было полезно для выполнения другого обслуживания перед переключением обратно в многопользовательский режим. В наши дни он мало используется, но по-прежнему используется по умолчанию. Страница руководства расскажет вам, как выбрать тип выключения.

Также sudo не требуется для пользователя root, поэтому вы можете пропустить его для пользователя root.

1
28.01.2020, 04:44

Теги

Похожие вопросы