В некоторых случаях требуется быстро выключить систему Linux через командную строку, будь то по необходимости завершить работу сервера, выполнить автоматизированный процесс или просто ускорить обычное завершение сессии. Командная строка предоставляет простой и эффективный способ выключения системы, особенно для пользователей, предпочитающих текстовый интерфейс или работающих с Linux на сервере без графической оболочки.
Работа с операционными системами семейства Linux часто требует взаимодействия с командной строкой. Особенно это актуально на серверах или системах без графического интерфейса, где управление происходит исключительно через терминал. Одной из базовых, но важных операций является правильное выключение системы. Корректное завершение работы Linux через терминал позволяет избежать потерь данных, повреждения файловой системы и других нежелательных последствий. В этой статье мы рассмотрим, как правильно и эффективно выключать систему Linux через терминал.
В этой статье мы рассмотрим быстрые и эффективные команды для выключения Linux из командной строки. Вы узнаете, как использовать различные параметры для мгновенного завершения работы системы, как настроить автоматическое выключение через заданный промежуток времени и как корректно завершить все процессы перед отключением, избегая возможных ошибок и потерь данных.
Содержание статьи
Отключение Linux через терминал
Команда «shutdown» осуществляет безопасное завершение работы системы. Все активные пользователи получают оповещение о предстоящем отключении, а вход в систему приостанавливается. Отключение можно произвести немедленно или установить задержку перед завершением.
Отключение Linux через командную строку весьма удобно, и многие пользователи предпочитают управлять своим ПК именно так. Прежде чем система перейдет в режим сна или перезагрузки, все процессы получают сигнал SIGTERM, что позволяет таким программам, как vi, сохранить редактируемые файлы, а почтовым клиентам и приложениям для новостей — корректно завершить свою работу.
Команда «shutdown» выполняет свою функцию, отправляя сигнал процессу init с просьбой изменить уровень запуска. Уровень 0 предназначен для завершения работы системы, уровень 6 — для перезагрузки, а уровень 1 — для перехода в режим, позволяющий выполнять административные задачи (однопользовательский режим). По умолчанию используется уровень 1, если не заданы параметры -h или -r. В вашей системе могут быть иные параметры для команды выключения; обратитесь к документации устройства для получения информации.
Отключение Linux через терминал
shutdown [-akrhPHfFnc] [-t sec] time [message]
Выключение Linux через командную строку: примеры использования.
- Управляйте доступом к команде shutdown с помощью файла управления доступом /etc/shutdown.allow. Для подробной информации обратитесь к разделу «Контроль доступа» ниже.
- Не отключайте устройство, а отправляйте предупреждения, создавая иллюзию, что оно действительно отключилось.
- Перезапуск после отключения.
- -h указывает системе завершить свою работу, после чего она будет остановлена.
- -P Инструктирует систему завершить свою деятельность, после чего произвести отключение.
- Если задан параметр -h, данная опция указывает на необходимость загрузки системы в загрузочный монитор, если это поддерживается соответствующими системами.
- -f Игнорировать fsck после перезагрузки.
- F Запустить fsck принудительно после перезагрузки.
- Не запускайте init для остановки процессов; используйте shutdown, чтобы он справился с этим самостоятельно.
Применение данного варианта не рекомендуется, так как его последствия могут быть непредсказуемыми.
- Отменить запланированное завершение системы. Эта команда не относится к «shutdown now», который немедленно завершает работу без ожидания. Аргумент времени для этой опции указать нельзя, однако можно добавить сообщение, которое будет отправлено всем пользователям.
- Сообщить инициалисту о необходимости подождать несколько секунд между процессами отправки предупреждения и сигнала уничтожения, прежде чем переходить к следующему этапу запуска.
- Параметр time определяет момент, когда нужно выполнить отключение.
Форматы времени могут значительно различаться:
Во-первых, это может быть точное время в формате чч:мм, где чч обозначает часы (1 или 2 цифры в диапазоне от 0 до 23), а мм — минуты (представленные двумя цифрами).
Во-вторых, это может быть в формате +m, где m обозначает количество минут ожидания.
Также теперь слово идентично команде +0; Оно моментально завершает работу системы. Информация, направляемая всем пользователям, вместе с обычным уведомлением о завершении работы.
Детали команды
Если отключение запланировано на будущее, система создаст файл /etc/nologin, который предотвращает доступ новых пользователей через программы, такие как login. Этот файл появляется за пять минут до начала процесса отключения. Если команда shutdown прерывается до инициализации (например, отменена или произошла ошибка), файл автоматически удаляется. Он также удаляется перед переходом на другой уровень запуска с помощью команды init.
Флаг -f указывает на «быструю перезагрузку». Он создает лишь вспомогательный файл /fastboot, который система может проверить при повторном запуске. Загрузочный rc-файл системы (где «rc» — это сокращение от «runcom», что значит «выполнить команды») может обнаружить этот файл и принять решение не выполнять fsck, так как система была завершена корректно. После этого на этапе загрузки процесс должен удалить файл /fastboot.
Флаг -F указывает на «принудительное выполнение fsck». Он создает только вспомогательный файл /forcefsck, который может быть проверен системой при следующем запуске. Загрузочный rc-файл способен определить наличие этого файла и, в зависимости от этого, решает, следует ли запустить fsck с флагом «принудительно» для проверки целостности размонтированных файловых систем. После завершения этого процесса загрузки файл /forcefsck должен быть удалён.
Флаг -n предотвращает вызов init при выполнении команды shutdown и приводит к завершению всех работающих процессов. При этом shutdown отключает квоты, учет, обмены и размонтирует все файловые системы.
Регулирование доступа
Выключение системы может произойти из init при нажатии комбинации клавиш CTRL-ALT-DEL, если в файле /etc/inittab есть соответствующая запись. Это подразумевает, что любой, имеющий физический доступ к клавиатуре консоли, может отключить систему.
Чтобы избежать этого, процедура выключения может проверить, зарегистрирован ли авторизованный пользователь. Если выключение инициируется с аргументом -a (его нужно добавить к команде shutdown в файле /etc/inittab), система проверяет наличие файла /etc/shutdown.allow. Затем она сопоставляет имена пользователей из этого файла со списком активных сессий на виртуальной консоли (из /var/run/utmp). Если в системе находится один из авторизованных пользователей или root, процедура выполнится. В противном случае будет выведено сообщение.
На физическую консоль устройства. Формат файла /etc/shutdown.allow предполагает одно имя пользователя на строку. Разрешены пустые строки и строки с комментариями (начинающиеся с #). В данный момент файл ограничивает количество пользователей до 32.
Учтите, что в случае отсутствия файла /etc/shutdown.allow аргумент -a не будет учитываться.
Завершение работы Linux и отключение питания устройства
Опция -H устанавливает переменную среды INIT_HALT в значение HALT, тогда как параметр -P задаёт её значение как POWEROFF. Скрипт shutdown, который вызывает halt в конце процесса выключения, должен проверить эти переменные среды и вызвать halt с соответствующими параметрами, чтобы достичь желаемого результата.
sudo shutdown now
Эта команда завершает работу системы немедленно. С помощью параметра now указывается, что выключение должно произойти прямо сейчас.
Если требуется отложить выключение, можно задать конкретное время:
sudo shutdown +10
Эта команда завершит работу системы через 10 минут. Также можно указать точное время:
sudo shutdown 22:00
Чтобы отменить запланированное выключение, можно использовать следующую команду:
sudo shutdown -c
В некоторых случаях необходимо предупредить всех пользователей системы перед её выключением, чтобы они могли сохранить свою работу и корректно завершить процессы. Команда shutdown позволяет отправлять такие предупреждения.
sudo shutdown +5 "Система будет выключена через 5 минут. Сохраните свои данные."
Эта команда завершит работу через 5 минут и выведет сообщение всем активным пользователям системы.
Некорректное завершение работы системы Linux, например, при резком отключении питания или использовании не предназначенных для этого команд, может привести к повреждению файловой системы или потере данных. Команды для корректного завершения работы, такие как shutdown, позволяют операционной системе завершить все активные процессы, сохранить данные и безопасно отключить оборудование.
Это особенно важно для серверов и систем с критически важными задачами, где любая потеря данных может иметь серьёзные последствия.
Кроме того, при правильном завершении работы снижается риск появления ошибок в загрузке системы при последующем включении. Файловые системы Linux имеют встроенные механизмы проверки целостности данных, такие как fsck, которые запускаются автоматически после некорректного завершения работы системы, но их лучше избегать. Команды для выключения системы поддерживают дополнительные параметры, которые позволяют более гибко управлять процессом завершения работы:
shutdown -h now — немедленное завершение работы и выключение компьютера.
shutdown -r now — немедленная перезагрузка системы.
shutdown -P now — выключение системы с отключением питания.
shutdown -H now — завершение работы без отключения питания (с аналогичным эффектом, как у команды halt).
Выключение системы Linux через терминал — это простой и безопасный способ завершения работы, особенно на серверах и в средах без графического интерфейса. Использование правильных команд, таких как shutdown, poweroff, halt, позволяет корректно завершить все процессы и избежать повреждения данных. Важно помнить, что системное выключение требует прав администратора, поэтому команды необходимо выполнять с помощью sudo. Независимо от ситуации, будь то запланированное выключение или экстренная перезагрузка, знание этих команд позволит вам управлять системой максимально эффективно.

