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

В чем разница между «перезапуском службы» и «перезагрузкой службы»

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

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

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

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

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

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

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

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

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

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

Источник

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

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

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

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

# systemctl подкоманда системная-служба

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

# systemctl status 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)
.

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

Обратите внимание на количество дополнительной информации о службе: описание, путь к service-файлу и время загрузки, состояние идентификатор процесса (PID), а также диагностические сообщения.

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

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

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

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

# service cron restart

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

# systemctl restart cron

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

# systemctl stop cron
# systemctl start cron

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

# systemctl 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 в процессе загрузки системы может использоваться следующая команда:

# systemctl enable cron

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

# systemctl disable cron

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

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

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

# systemctl start cron
# systemctl enable cron
Synchronizing state of cron.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable cron
Created symlink /etc/systemd/system/multi-user.target.wants/cron.service → /lib/systemd/system/cron.service.

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

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

# systemctl stop cron
# systemctl disable cron
Synchronizing state of cron.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install disable cron
Removed /etc/systemd/system/multi-user.target.wants/cron.service.

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

# systemctl status cron

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

# systemctl is-enabled cron
enabled

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

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

Заключение

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

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

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

Источник

What is the difference between, service reload and service restart? [closed]

Want to improve this question? Update the question so it’s on-topic for Stack Overflow.

What the difference between services [name] reload and service [name] restart? actually, they same.. well, what recommand to use?

4 Answers 4

Some services which support the reload command can reload their configuration without fully shutting down and starting up again. Postfix does this, as does Apache. It is very useful if you need to make configuration changes to a live server without incurring even a few seconds of downtime.

Reload will tell the service to reload its configuration files, but keep the same process running. Restart tells it to shut down entirely, then restart.

Generally speaking, restart will terminate the service in question and restart it; reload will only reload the configuration file.

Since reload only reloads the config, it will cause less disruption to existing activities and currently open connections; users might not even notice that it was run. However, depending on what server we’re talking about, some options may not be changeable using reload ; and if the server is using too much memory, etc, it may be necessary to use restart to force it to start from a clean slate.

restart shuts the service down and then starts it up again, whereas reload instructs the daemon to reload its configuration. You use whichever is appropriate for your situation.

Not the answer you’re looking for? Browse other questions tagged linux or ask your own question.

Related

Hot Network Questions

site design / logo © 2021 Stack Exchange Inc; user contributions licensed under cc by-sa. rev 2021.12.6.40898

By clicking “Accept all cookies”, you agree Stack Exchange can store cookies on your device and disclose information in accordance with our Cookie Policy.

Источник

What is the difference between «service restart» and «service reload»

An example: most guides I’ve read for setting up PostgreSQL say that, once I’ve edited postgresql.conf and pg_hba.conf to allow remote connections, I should run:

In case it matters, I’m on Ubuntu 11.10, though I’m hoping for an as generally applicable explanation as possible.

В чем различие между действиями restart и reload linux. Смотреть фото В чем различие между действиями restart и reload linux. Смотреть картинку В чем различие между действиями restart и reload linux. Картинка про В чем различие между действиями restart и reload linux. Фото В чем различие между действиями restart и reload linux

7 Answers 7

В чем различие между действиями restart и reload linux. Смотреть фото В чем различие между действиями restart и reload linux. Смотреть картинку В чем различие между действиями restart и reload linux. Картинка про В чем различие между действиями restart и reload linux. Фото В чем различие между действиями restart и reload linux

В чем различие между действиями restart и reload linux. Смотреть фото В чем различие между действиями restart и reload linux. Смотреть картинку В чем различие между действиями restart и reload linux. Картинка про В чем различие между действиями restart и reload linux. Фото В чем различие между действиями restart и reload linux

The Debian Policy Manual specifies that every /etc/init.d/ script should support a force-reload action, which means reload if the service supports it, and restart if the service doesn’t support reloading.

I’m not sure how that translates into the modern Ubuntu upstart world.

To expand عبد النور التومي answer with my experience with systemd.

In systemd whenever a process is started it is run within systemd context, most clear example of this is with the environment variables defined in its unit file.

So when you send a systemctl reload [someservice] signal it sends a signal to the service to reload itself gracefully if it is supported. If not, the process will simply ignore the signal. This is configurable though.

What do I mean with gracefully? to start new workers with the new configuration or code and stop the old workers as they finish serving current requests if any.

And if you make systemctl restart [someservice] it will tell systemctl to tell the service to stop, destroy the current systemd context, create a new one and run the service again. This makes sense for example to reload environment variables in a systemd context or if a reload is not supported.

Hope this clarifies a little and if I’m wrong in something please let me know.

Источник

Перезагрузка компьютера в Linux

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

Сегодня мы рассмотрим такие вопросы, как команда перезагрузки Linux из консоли, перезагрузка удаленно, и непосредственно перезагрузка в графическом интерфейсе. Начнем, пожалуй, с обычной перезагрузки системы.

Перезагрузка Linux в графическом интерфейсе

Здесь, как говорится, что может быть проще. Рассмотрим сначала перезагрузку в Ubuntu Unity. Достаточно нажать на кнопку с шестеренкой в правом верхнем углу экрана, и выбрать пункт Выключение:

В чем различие между действиями restart и reload linux. Смотреть фото В чем различие между действиями restart и reload linux. Смотреть картинку В чем различие между действиями restart и reload linux. Картинка про В чем различие между действиями restart и reload linux. Фото В чем различие между действиями restart и reload linux

Затем в открывшимся окне кликнуть по пункту Перезагрузка:

В чем различие между действиями restart и reload linux. Смотреть фото В чем различие между действиями restart и reload linux. Смотреть картинку В чем различие между действиями restart и reload linux. Картинка про В чем различие между действиями restart и reload linux. Фото В чем различие между действиями restart и reload linux

В окружении рабочего стола Gnome, все очень похоже на Unity, а в KDE нужно открыть главное меню, перейти на вкладку выход, и выбрать пункт перезагрузить:

В чем различие между действиями restart и reload linux. Смотреть фото В чем различие между действиями restart и reload linux. Смотреть картинку В чем различие между действиями restart и reload linux. Картинка про В чем различие между действиями restart и reload linux. Фото В чем различие между действиями restart и reload linux

Затем подтвердить перезагрузку.

Перезагрузка Linux в терминале

А здесь уже простор намного шире, существует около десятка команд, которыми можно перезагрузить Linux. Одним нужны root привилегии, другим нет, одни выглядят просто и легко запоминаются, а другие длинные и сложные. Дальше мы рассмотрим их все.

Первая команда перезагрузки Linux, самая распространенная и самая простая:

Как видите, утилите нужны права суперпользователя. После нажатия Enter компьютер сразу уйдет в перезагрузку.

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

Служба системных сообщений dbus тоже умеет перезагружать компьютер:

Тут уже не нужны права суперпользователя. Это были обычные способы перезагрузки Linux, но есть еще один, нестандартный или даже два. Это магические SysRq клавиши. Ядро Linux отслеживает нажатие определенных сочетаний клавиш, и в ответ на них выполняет нужные действия. Сначала включаем поддержку sysrq:

echo 1 > /proc/sys/kernel/sysrq

Лучше это сделать заблаговременно, так как этот способ полезен когда система зависла и ни на что не реагирует:

Для активации SysRq сочетания зажмите Alt + SysRq и нажмите код клавиши. Для нормальной перезагрузки рекомендуется использовать следующую последовательность: R E I S U B, клавиши нажимать в той же последовательности с интервалом приблизительно секунду.

Перед перезагрузкой система ожидает завершения всех процессов, останавливает все сервисы, отключает и монтирует в режиме только чтения файловые системы. Это мы и делаем, нажимая последовательно эти сочетания клавиш. Но если вам нужно перезагрузить систему сейчас не дожидаясь отключения всех процессов, например, сервер, можно сразу отправить сигнал B. Вот так: Alt + SysRq + B.

SysRq можно задействовать и без сочетаний клавиш, записав нужный код операции в файл /proc/sysrq-trigger:

echo b > /proc/sysrq-trigger

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

Удаленная перезагрузка Linux

Если у вас есть доступ к серверу по ssh то можно очень просто удаленно перезагрузить linux с помощью одной из выше приведенных команд, например:

ssh root@remote-server.com /sbin/reboot

Только опять же для этой операции нужно иметь права root на удаленном сервере.

Выводы

Теперь вы знаете как выполняется перезагрузка linux, вы даже знаете что делать когда система зависла и как перезагрузить сервер по ssh. Если у вас остались вопросы, спрашивайте в комментариях!

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *