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

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

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

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

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

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

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

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

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

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

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

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

Источник

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.

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

7 Answers 7

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

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

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.

Источник

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

Управление системными службами чаще всего осуществляется системными администраторами, но иногда должно осуществляться и обычными пользователями. Без сомнения, замена 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.11.26.40833

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

Источник

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

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

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

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

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

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

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

Утилита systemctl

$ systemctl опции команда служба служба.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

sudo systemctl start application.service

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

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

sudo systemctl stop application

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

sudo systemctl status application

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

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

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

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

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

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

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

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

sudo systemctl enable application

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

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

sudo systemctl disable applciation

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

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

sudo systemctl is-enabled application

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

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

Выводы

Источник

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

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