В чем различие между действиями restart и reload linux

Обновлено: 30.06.2024

Я пытаюсь понять разницу между service restart [someservice] и service reload [someservice] . Я понимаю, что «перезапуск» перезапускает службу, тогда как «перезагрузка» перезагружает конфигурацию, но я недостаточно хорошо понимаю практические последствия этого, чтобы определить, что мне следует использовать в данном контексте.

Пример: большинство руководств, которые я читал для настройки PostgreSQL, говорят, что, как только я отредактировал postgresql.conf и pg_hba.conf, чтобы разрешить удаленные подключения, я должен выпустить sudo service postgresql restart . Однако, если бы я угадывал, какой из них использовать на основе приведенного выше описания, я бы выбрал «перезагрузить».

В случае, если это имеет значение, я нахожусь на Ubuntu 11.10 - хотя я надеюсь, что объяснение будет в общем применимо, насколько это возможно.

То, что вы сказали правильно, reload сообщает службе перезагрузить свои файлы конфигурации. Это означает, что должно быть достаточно перезагрузить конфигурацию; однако могут быть определенные службы, которые «не следуют правилу» или не будут перезагружать файлы конфигурации. Из-за этого вы, вероятно, в большей безопасности с restart . Лично я не пользуюсь postgresql , поэтому не знаю.

В настоящее время, если служба нуждается в ударе (например, изменен файл конфигурации), вы можете уведомить службу, но это приводит к перезапуску. Было бы хорошо, если бы перезагрузка была выполнена, если служба уже работала (хотя я предполагаю, что некоторые службы должны быть перезапущены для одних файлов, перезагрузки для других).

Самый сложный пример, который я могу вспомнить, это что-то вроде Apache. Обычно вы можете просто попросить его перезагрузить, но иногда вам нужно запросить перезагрузку (например, если вы добавляете / удаляете модули).

Чтобы расширить عبد النور التومي , ответьте на мой опыт работы с systemd.

В systemd всякий раз, когда процесс запускается, он запускается в контексте systemd, наиболее яркий пример этого - переменные среды, определенные в его модульном файле.

Таким образом, когда вы отправляете сигнал systemctl reload [someservice] , он отправляет сигнал в службу для корректной перезагрузки, если он поддерживается. Если нет, процесс просто проигнорирует сигнал. Это настраивается, хотя.

Что я имею в виду под изящно? запускать новых работников с новой конфигурацией или кодом и останавливать старых работников, когда они заканчивают обслуживать текущие запросы, если таковые имеются.

И если вы сделаете systemctl restart [someservice] , он скажет systemctl, чтобы служба остановилась, уничтожила текущий контекст systemd, создала новый и снова запустила службу. Это имеет смысл, например, для перезагрузки переменных среды в контексте systemd или если перезагрузка не поддерживается.

Надеюсь, это немного прояснится, и если я ошибаюсь, пожалуйста, дайте мне знать.

Управление системными службами чаще всего осуществляется системными администраторами, но иногда должно осуществляться и обычными пользователями. Без сомнения, замена SysV (команды service и chkconfig) на systemd (команда systemctl) вызвала достаточно неоднозначную реакцию пользователей и администраторов. В результате у обоих систем остались свои приверженцы.

На сегодняшний день подавляющее большинство дистрибутивов использует systemd для управления системными службами. По этой причине стоит уметь пользоваться командой systemctl.

Я не считаю, что каждый из пользователей может самостоятельно разобраться со всеми нюансами использования рассматриваемого инструментария. По этой причине я постараюсь объяснить все нюансы, связанные с командой systemctl, максимально простыми словами. В конце будет подведены итоги и даны советы по использованию тех или иных подкоманд.

Примечание: на man-странице systemctl первым параметром является «команда», что может смутить неискушенного пользователя. Я буду называть командой саму команду systemctl, а ее первый параметр - подкомандой. Вторым параметром команды является имя системной службы.

В качестве примера я буду использовать службу cron:

Информация о состоянии системных служб

При диагностике работы системы следует начинать с получения информации о состоянии важных системных служб. Самым простым решением данной задачи является использование подкоманды status:

окт 29 18:17:02 layla CRON[5644]: pam_unix(cron:session): session closed for user root
окт 29 18:30:01 layla CRON[7293]: pam_unix(cron:session): session opened for user root by (uid=0)
.

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

Команда systemctl status также весьма полезна для выяснения причин неработоспособности тех или иных системных механизмов. При диагностике систем я первым делом проверяю состояние основных системных служб с помощью systemctl. Зачем беспокоится о межсетевых экранах, SELinux/Apparmor или файлах конфигурации, если необходимая служба даже не запущена?

Что же, теперь вы знаете, как получить информацию о состоянии системной службы, такой, как cron. Но как изменить само это состояние?

Запуск и остановка системных служб

При изменении файла конфигурации той или иной запущенной системной службы, вам придется либо перезапустить саму службу, либо перезагрузить ее конфигурацию. В результате служба повторно прочитает содержимое файла конфигурации и изменит свое поведение в соответствии с ним. В прошлом для этой цели использовалась команда service:

В случае systemd для этой цели используется команда systemctl. К примеру, для перезапуска системной службы cron с помощью systemctl следует выполнить следующую команду:

На мой взгляд, данный синтаксис более очевиден. Для того, чтобы остановить или запустить системную службу, следует использовать соответствующий синтаксис и подкоманды stop и start соответственно, например:

Службы, которые не прекращают работу после использования подкоманды stop, могут быть остановлены принудительно с помощью подкоманды kill. Например, для принудительной остановки службы cron следует использовать следующую команду:

Перезагрузка конфигурации системной службы работает немного по-другому. Подкоманда reload просто сообщает системной службе о необходимости повторного чтения содержимого файла конфигурации, в отличие от команды restart, которая останавливает и снова запускает ее, в результате чего также читается обновленное содержимое файла конфигурации.

Например, если вы используете команду systemctl restart cron, планировщик будет полностью перезапущен. В то же время, при перезагрузке конфигурации ему будет отправлен соответствующий сигнал. В обоих случаях обновленное содержимое файла конфигурации будет прочитано и учтено.

Перезагрузка конфигурации осуществляется гораздо быстрее, но не все службы поддерживают ее.

Подкоманды start, stop, restart и reload оказывают влияние лишь на текущую рабочую сессию.

Активация и деактивация системных служб

Многие системные администраторы, мало знакомые с Linux, не понимают разницы между подкомандами start/stop и enable/disable. Я уже рассказывал о командах start, stop и restart в предыдущем разделе.

Подкоманды start и stop изменяют текущее состояние службы. Однако, после перезагрузки системы ее состояние будет приведено к тому, которое было установлено по умолчанию. Другими словами, если я остановлю службу cron и перезагружу компьютер, в процессе его загрузки она будет снова запущена.

В прошлом вы наверняка использовали команду chkconfig для установки уровней исполнения для запуска и остановки тех или иных служб. Например:

Эта команда активирует запуск службы cron на уровнях исполнения 3 и 5.

В случае с systemctl активация запуска служб осуществляется с помощью подкоманд enable и disable. Синтаксис соответствующих команд аналогичен синтаксису команд с подкомандами start, stop и restart.

Например, для активации запуска службы cron в процессе загрузки системы может использоваться следующая команда:

Аналогично, для деактивации запуска этой службы в процессе загрузки системы может использоваться следующая команда:

Активация и деактивация системных служб, по аналогии с их запуском и остановкой, обычно не вызывает каких-либо вопросов. Однако, вопросы появляются в случае необходимости использования обоих классов подкоманд.

Совместное использование подкоманд для активации и запуска системных служб

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

Деактивация системной службы осуществляется по аналогичной схеме. Вам придется использовать подкоманду disable для деактивации запуска службы в процессе загрузки системы. Однако, в том случае, если служба уже запущена, вам придется использовать подкоманду stop для завершения ее работы.

Например, деактивация и остановка службы cron могут быть осуществлены с помощью следующих команд:

Не забывайте о том, что вы всегда можете воспользоваться подкомандой status, если не уверены в корректности выполненных действий:

Для того, чтобы убедиться в том, что запуск службы при загрузке системы активрован, вы можете воспользоваться еще одной подкомандой systemctl под названием is-enabled. Например, для проверки статуса активации службы cron следует использовать следующую команду:

Множество подкоманд и полезный механизм для получения их списка

Я рассказал о некоторых подкомандах systemctl, таких, как start, stop, restart, enable, disable, status и некоторых других. Их уже достаточно для того, чтобы запутаться! Если вы используете Fedora Workstation, то вам поможет старый друг — клавиша Tab, используемая для автозавершения команд. Попробуйте сделать следующее: введите команду systemctl и символ пробела после нее. После этого дважды нажмите клавишу Tab, в результате чего должен быть выведен полный список подкоманд команды systemctl. Не уверен, что большинство системных администраторов и пользователей знают о данном механизме.

Заключение

Как вы убедились сами, управление системными службами с помощью утилиты systemctl не представляет каких-либо сложностей. Мне кажется, что она работает более логично, чем такие утилиты, как service и chkconfig. Кроме того, использование одной команды для управления службами вместо двух гораздо удобнее.

Вам следует запомнить следующие правила:

  • Для управления текущим состоянием служб следует использовать подкоманды start/stop/restart
  • После модификации файлов конфигурации системных служб следует использовать подкоманды start/stop/restart/reload
  • Для активации и деактивации запуска системных служб в процессе загрузки системы следует использовать подкоманды enable/disable
  • В процессе диагностики системы следует использовать подкоманду status на раннем этапе

Наконец, вам не придется запоминать все подкоманды systemctl. Вы можете либо просто ввести systemctl, символ пробела и дважды нажать Tab, либо воспользоваться командой systemctl --help, если первый вариант не срабатывает.

Управление системными службами осуществляется как в процессе администрирования мощных серверов, так и в процессе администрирования домашних систем и я надеюсь, что теперь вам будет немного проще работать с командой systemctl и ее подкомандами.

Я пытаюсь понять разницу между service restart [someservice]и service reload [someservice]. Я понимаю, что «перезапуск» перезапускает службу, тогда как «перезагрузка» перезагружает конфигурацию, но я недостаточно хорошо понимаю практические последствия этого, чтобы определить, что мне следует использовать в данном контексте.

Пример: в большинстве руководств, которые я читал по настройке PostgreSQL, говорится, что после того, как я отредактировал postgresql.conf и pg_hba.conf, чтобы разрешить удаленные подключения, я должен выпустить sudo service postgresql restart. Тем не менее, если бы я угадывал, что использовать на основе приведенного выше описания, я бы выбрал «перезагрузить».

То, что вы сказали правильно, reloadговорит службе перезагружать свои файлы конфигурации. Это означает, что должно быть достаточно перезагрузить конфигурацию; однако могут быть определенные службы, которые «не следуют правилу» или не будут перезагружать файлы конфигурации. Из-за этого вы, вероятно, в большей безопасности restart. Я лично не пользуюсь postgresql, поэтому не знаю.

  • рестарт = стоп + старт
  • перезагрузить = продолжить работу + перечитать файлы конфигурации.

Не все службы поддержки reload. Для тех, кто это делает, обычно предпочтительнее перезапуск (т. Е. Перезагрузка приводит к уменьшению времени простоя или его отсутствию)

В Руководстве по политике Debian указывается, что каждый /etc/init.d/сценарий должен поддерживать force-reloadдействие, что означает reload, что служба поддерживает его, а restartслужба не поддерживает перезагрузку.

Я не уверен, как это переводится в современный мир Ubuntu.

Чтобы расширить عبد النور التومي, ответьте с моим опытом работы с systemd.

В systemd всякий раз, когда процесс запускается, он запускается в контексте systemd, наиболее наглядным примером этого являются переменные окружения, определенные в его модульном файле.

Поэтому, когда вы отправляете systemctl reload [someservice]сигнал, он отправляет сигнал службе, чтобы она корректно перезагрузилась, если это поддерживается. Если нет, процесс просто проигнорирует сигнал. Это настраивается, хотя.

Что я имею в виду изящно? запускать новых работников с новой конфигурацией или кодом и останавливать старых работников, когда они заканчивают обслуживать текущие запросы, если таковые имеются.

И если вы сделаете systemctl restart [someservice]это, он скажет systemctl, чтобы служба остановилась, уничтожила текущий контекст systemd, создала новый и снова запустила службу. Это имеет смысл, например, для перезагрузки переменных среды в контексте systemd или если перезагрузка не поддерживается.

Надеюсь, это прояснит немного, и если я ошибаюсь, пожалуйста, дайте мне знать.

В настоящее время, если служба требует удаления (например, изменен файл конфигурации), вы можете уведомить службу, но это приводит к перезапуску. Было бы хорошо, если бы перезагрузка была сделана, если служба уже работала (хотя я предполагаю, что некоторые службы должны быть перезапущены для одних файлов, перезагрузки для других).

Самый сложный пример, который я могу вспомнить, это что-то вроде Apache. Обычно вы можете просто попросить его перезагрузить, но иногда вам нужно запросить перезагрузку (например, если вы добавляете / удаляете модули).

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

Краткое руководство по управлению системными службами в Linux

Управление системными службами чаще всего осуществляется системными администраторами, но иногда должно осуществляться и обычными пользователями. Без сомнения, замена SysV (команды service и chkconfig) на systemd (команда systemctl) вызвала достаточно неоднозначную реакцию пользователей и администраторов. В результате у обоих систем остались свои приверженцы.

На сегодняшний день подавляющее большинство дистрибутивов использует systemd для управления системными службами. По этой причине стоит уметь пользоваться командой systemctl.

Я не считаю, что каждый из пользователей может самостоятельно разобраться со всеми нюансами использования рассматриваемого инструментария. По этой причине я постараюсь объяснить все нюансы, связанные с командой systemctl, максимально простыми словами. В конце будет подведены итоги и даны советы по использованию тех или иных подкоманд.

В качестве примера я буду использовать службу cron:

Информация о состоянии системных служб

При диагностике работы системы следует начинать с получения информации о состоянии важных системных служб. Самым простым решением данной задачи является использование подкоманды us:

Loaded: loaded (/lib/systemd/system/cron.service; enabled; vendor preset: enabled)

Active: active (running) since Thu 2020-10-29 17:37:29 MSK; 1h 35min ago

Main PID: 915 (cron)

Tasks: 1 (limit: 4612)

└─915 /usr/sbin/cron -f

окт 29 18:17:02 layla CRON[5644]: pam_unix(cron:session): session closed for user root

окт 29 18:30:01 layla CRON[7293]: pam_unix(cron:session): session opened for user root by (uid=0)

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

Команда systemctl us также весьма полезна для выяснения причин неработоспособности тех или иных системных механизмов. При диагностике систем я первым делом проверяю состояние основных системных служб с помощью systemctl. Зачем беспокоится о межсетевых экранах, SELinux/Apparmor или файлах конфигурации, если необходимая служба даже не запущена?

Что же, теперь вы знаете, как получить информацию о состоянии системной службы, такой, как cron. Но как изменить само это состояние?

Запуск и остановка системных служб

При изменении файла конфигурации той или иной запущенной системной службы, вам придется либо перезапустить саму службу, либо перезагрузить ее конфигурацию. В результате служба повторно прочитает содержимое файла конфигурации и изменит свое поведение в соответствии с ним. В прошлом для этой цели использовалась команда service:

В случае systemd для этой цели используется команда systemctl. К примеру, для перезапуска системной службы cron с помощью systemctl следует выполнить следующую команду:

На мой взгляд, данный синтаксис более очевиден. Для того, чтобы остановить или запустить системную службу, следует использовать соответствующий синтаксис и подкоманды stop и start соответственно, например:

Службы, которые не прекращают работу после использования подкоманды stop, могут быть остановлены принудительно с помощью подкоманды kill. Например, для принудительной остановки службы cron следует использовать следующую команду:

Перезагрузка конфигурации системной службы работает немного по-другому. Подкоманда reload просто сообщает системной службе о необходимости повторного чтения содержимого файла конфигурации, в отличие от команды restart, которая останавливает и снова запускает ее, в результате чего также читается обновленное содержимое файла конфигурации.

Например, если вы используете команду systemctl restart cron, планировщик будет полностью перезапущен. В то же время, при перезагрузке конфигурации ему будет отправлен соответствующий сигнал. В обоих случаях обновленное содержимое файла конфигурации будет прочитано и учтено.

Перезагрузка конфигурации осуществляется гораздо быстрее, но не все службы поддерживают ее.

Подкоманды start, stop, restart и reload оказывают влияние лишь на текущую рабочую сессию.

Активация и деактивация системных служб

Многие системные администраторы, мало знакомые с Linux, не понимают разницы между подкомандами start/stop и enable/disable. Я уже рассказывал о командах start, stop и restart в предыдущем разделе.

Подкоманды start и stop изменяют текущее состояние службы. Однако, после перезагрузки системы ее состояние будет приведено к тому, которое было установлено по умолчанию. Другими словами, если я остановлю службу cron и перезагружу компьютер, в процессе его загрузки она будет снова запущена.

В прошлом вы наверняка использовали команду chkconfig для установки уровней исполнения для запуска и остановки тех или иных служб. Например:

Эта команда активирует запуск службы cron на уровнях исполнения 3 и 5.

В случае с systemctl активация запуска служб осуществляется с помощью подкоманд enable и disable. Синтаксис соответствующих команд аналогичен синтаксису команд с подкомандами start, stop и restart.

Например, для активации запуска службы cron в процессе загрузки системы может использоваться следующая команда:

Аналогично, для деактивации запуска этой службы в процессе загрузки системы может использоваться следующая команда:

Активация и деактивация системных служб, по аналогии с их запуском и остановкой, обычно не вызывает каких-либо вопросов. Однако, вопросы появляются в случае необходимости использования обоих классов подкоманд.

Совместное использование подкоманд для активации и запуска системных служб

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

Synchronizing e of cron.service with SysV service script with /lib/systemd/systemd-sysv-install.

Executing: /lib/systemd/systemd-sysv-install enable cron

Created sym /etc/systemd/system/multi-user.target.wants/cron.service → /lib/systemd/system/cron.service.

Деактивация системной службы осуществляется по аналогичной схеме. Вам придется использовать подкоманду disable для деактивации запуска службы в процессе загрузки системы. Однако, в том случае, если служба уже запущена, вам придется использовать подкоманду stop для завершения ее работы.

Например, деактивация и остановка службы cron могут быть осуществлены с помощью следующих команд:

Synchronizing e of cron.service with SysV service script with /lib/systemd/systemd-sysv-install.

Executing: /lib/systemd/systemd-sysv-install disable cron

Не забывайте о том, что вы всегда можете воспользоваться подкомандой us, если не уверены в корректности выполненных действий:

Для того, чтобы убедиться в том, что запуск службы при загрузке системы активрован, вы можете воспользоваться еще одной подкомандой systemctl под названием is-enabled. Например, для проверки статуса активации службы cron следует использовать следующую команду:

Множество подкоманд и полезный механизм для получения их списка

Заключение

Как вы убедились сами, управление системными службами с помощью утилиты systemctl не представляет каких-либо сложностей. Мне кажется, что она работает более логично, чем такие утилиты, как service и chkconfig. Кроме того, использование одной команды для управления службами вместо двух гораздо удобнее.

Вам следует запомнить следующие правила:

  • Для управления текущим состоянием служб следует использовать подкоманды start/stop/restart
  • После модификации файлов конфигурации системных служб следует использовать подкоманды start/stop/restart/reload
  • Для активации и деактивации запуска системных служб в процессе загрузки системы следует использовать подкоманды enable/disable
  • В процессе диагностики системы следует использовать подкоманду us на раннем этапе

Управление системными службами осуществляется как в процессе администрирования мощных серверов, так и в процессе администрирования домашних систем и я надеюсь, что теперь вам будет немного проще работать с командой systemctl и ее подкомандами.

Управление службами Linux

В операционной системе linux, так же как и в Windows, кроме обычных программ, которые могут взаимодействовать с пользователем есть еще один вид программ. Это работающие в фоне службы. Важность служб тяжело переоценить, они следят за состоянием системы, обеспечивают автоматическое подключение внешних устройств и сети, позволяют процессам взаимодействовать с оборудованием (dbus), а также в виде служб реализованы различные веб-серверы и серверы баз данных. В отличие от пользовательских программ, службы выполняются в фоне, и пользователь не имеет к ним прямого доступа. Пользователь еще не вошел в систему, только началась загрузка а основные службы уже запущенны и работают.

В этой статье мы рассмотрим управление службами Linux. Мы не будем трогать уже устаревшие системы, такие как SysVinit, сосредоточимся только на Systemd. Вы узнаете, как посмотреть запущенные службы linux, а также останавливать и запускать их самому.

Немного теории

Но потом на смену этому методу пришла новая модель и система инициализации systemd. Система инициализации запускается сразу после загрузки ядра и начинает инициализировать службы, теперь появилась возможность параллельной инициализации, а также зависимостей между службами. Таким образом, теперь можно определить сложное дерево порядка запуска служб. Но мы не будем вникать в подробности создания служб, нас интересует только сам процесс запуска. После запуска systemd собирает весь вывод службы в лог, и следит за ее работой, если служба аварийно завершилась, то автоматически ее перезапускает.

Служба в Systemd описывается файлом юнита, в нем описано что с ней нужно делать и как себя вести. Существуют такие типы служб:

Нас будут интересовать только service, и совсем немного target, но мы рассмотрели все остальные, чтобы вы смогли взглянуть на картину немного шире. Основы рассмотрели, теперь будет настройка служб LInux.

Утилита systemctl

Рассмотрим все по порядку. Опции очень сильно зависят от команд, поэтому рассмотрим их позже, а пока пройдемся по командах:

А теперь основные опции:

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

Управление службами Linux

Теперь, когда вы уже знаете все основы, команды и параметры можно переходить к делу. Со всеми остальными тонкостями разберемся по пути. Сначала давайте посмотрим запущенные службы linux. Нас будут интересовать только программы, а не все эти дополнительные компоненты, поэтому воспользуемся опцией type:

services

Следующая команда позволяет получить список служб linux, в который входят все службы, даже не запущенные, те, которые не запускались, но известны systemd, но это еще не все службы в системе:

services1

Дальше больше. Вы можете отсортировать список служб systemctl по состоянию. Например, только выполняющиеся:

services2

Или те, которые завершились с ошибкой:

service4

Для фильтрации можно брать любой показатель состояния из любой колонки. Другой командой мы можем посмотреть все файлы конфигурации служб на диске. Тут не будем фильтровать по типу, пусть программа покажет все:

Теперь отфильтруем только службы linux:

Здесь вы тоже можете использовать фильтры по состоянию. Теперь вы знаете как посмотреть запущенные службы linux, идем дальше.

Чтобы запустить службу используется команда start, например:

sudo systemctl start application.service

Причем расширение service можно опустить, оно и так подставляется по умолчанию. Если запуск прошел хорошо, программа ничего не выведет.

Остановить службу linux можно командой:

sudo systemctl stop application

Посмотреть состояние службы позволяет команда us:

sudo systemctl us application

services4

Здесь вы можете видеть, состояние running, exited, dead, failed и т д. А также несколько последних строчек вывода программы, которые очень помогут решить проблему с запуском если она возникнет.

Автозагрузка служб в systemd

Как вы знаете, systemd позволяет автоматически загружать службы при запуске системы по мере их надобности. Команда list-unit-files показывает добавлена ли служба в автозагрузку.

Поэтому чтобы получить список служб linux, запускаемых автоматически достаточно отфильтровать ее вывод по состоянию:

services5

services6

Все службы, запускаемые по умолчанию. Можете также посмотреть службы ic. Чтобы добавить службу в автозагрузку linux используйте команду enable:

sudo systemctl enable application

services7

А для того чтобы убрать ее из автозагрузки:

sudo systemctl disable applciation

services8

Также, вы можете посмотреть разрешена ли сейчас автозагрзука для службы:

sudo systemctl is-enabled application

services9

Утилита просто выведет состояние enabled, disabled или ic.

Выводы

Перезагрузка Linux из консоли

Обладатели разных дистрибутивов Linux время от времени сталкиваются с необходимостью перезагрузки операционной системы, что требуется делать после внесения каких-либо изменений в параметры или при появлении неполадок. Обычно поставленная задача осуществляется через графический интерфейс, но этот вариант не всегда получается использовать эффективно. Именно поэтому многие прибегают к вводу терминальных команд, которые и отвечают за подачу сигнала на перезагрузку. Сегодня мы хотим рассказать вам обо всех доступных способах перезапуска Линукс через консоль на примере Ubuntu.

Перезагружаем Linux через консоль

Способ 1: Команда reboot

О команде reboot наверняка слышали даже самые начинающие пользователи операционных систем Linux. Вся ее суть как раз и заключается в отправке текущего сеанса на перезагрузку, а дополнительные аргументы при этом не указываются.

    Откройте меню приложений и запустите оттуда «Терминал». Для этого вы можете задействовать и другой удобный вариант, например, стандартную горячую клавишу Ctrl + Alt + T.

Запуск терминала для дальнейшей перезагрузки системы Linux

Использование команды reboot для быстрой перезагрузки системы Linux

Ввод пароля для быстрой перезагрузки системы Linux через команду reboot

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

Способ 2: Команда shutdown

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

Команда для отложенного перезапуска компьютера через терминал Linux

Ввод пароля для подтверждения команды отложенного перезапуска компьютера через терминал Linux

Уведомление об успешном запуске отложенной перезагрузки Linux

Способ 3: Init Script

Команда для перезагрузки компьютера через скрипты Init в Linux

Способ 5: Горячие клавиши SysRq

Этот метод только косвенно связан с консолью, поскольку через нее производится настройка, а дальнейшая перезагрузка выполняется через горячие клавиши. Однако мы решили включить его в этот список из-за необычности и особенностей использования. Горячие клавиши SysRq пригодятся в тех ситуациях, когда графическая оболочка попросту не отвечает.

    Запустите «Терминал» и введите там echo 1 > /proc/sys/kernel/sysrq.

Команда для активации работы горячих клавиш SysRq в Linux

Переход к редактированию конфигурационного файла SysRq в Linux

Ввод пароля для перехода к редактированию конфигурационного файла SysRq в Linux

Редактирование конфигурационного файла SysRq в Linux

Сохранение конфигурационного файла SysRq в Linux после внесения изменений

Использование горячей клавиши SysRq для перезагрузки Linux

Корректный перезапуск осуществляется путем указания определенной последовательности кодов клавиш. Каждый из них имеет следующий вид:

Вам осталось только нажать каждую эту комбинацию в этой же очередности, чтобы перезагрузка прошла корректно.

Способ 6: Удаленная перезагрузка

Перезагрузка удаленного рабочего стола через терминал в Linux

Способ 7: Перезагрузка в Recovery Mode

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

    В меню восстановления вас интересует пункт «Продолжить нормальную загрузку» или «Перейти в командный интерпретатор суперпользователя». В первом случае просто начнется старт ОС в обычном режиме, а второй пункт запустит консоль в root.

Запуск консоли в режиме восстановления Linux

Подтверждение запуска консоли в режиме восстановления Linux

Перезагрузка компьютера через консоль в режиме восстановления Linux

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

Мы рады, что смогли помочь Вам в решении проблемы.

Опишите, что у вас не получилось. Наши специалисты постараются ответить максимально быстро.

Читайте также: