Я пытаюсь понять разницу между service restart [someservice]
и service reload [someservice]
. Я понимаю, что «перезапуск» перезапускает службу, тогда как «перезагрузка» перезагружает конфигурацию, но я недостаточно хорошо понимаю практические последствия этого, чтобы определить, что мне следует использовать в данном контексте.
Пример: в большинстве руководств, которые я читал по настройке PostgreSQL, говорится, что после того, как я отредактировал postgresql.conf и pg_hba.conf, чтобы разрешить удаленные подключения, я должен выпустить sudo service postgresql restart
. Тем не менее, если бы я угадывал, что использовать на основе приведенного выше описания, я бы выбрал «перезагрузить».
В случае, если это важно, я нахожусь на Ubuntu 11.10 - хотя я надеюсь, что объяснение в общем применимо насколько возможно.
источник
Ответы:
То, что вы сказали правильно,
reload
говорит службе перезагружать свои файлы конфигурации. Это означает, что должно быть достаточно перезагрузить конфигурацию; однако могут быть определенные службы, которые «не следуют правилу» или не будут перезагружать файлы конфигурации. Из-за этого вы, вероятно, в большей безопасностиrestart
. Я лично не пользуюсьpostgresql
, поэтому не знаю.источник
reload-or-restart
источник
Не все службы поддержки
reload
. Для тех, кто это делает, обычно предпочтительнее перезапуск (т. Е. Перезагрузка приводит к уменьшению времени простоя или его отсутствию)В Руководстве по политике Debian указывается, что каждый
/etc/init.d/
сценарий должен поддерживатьforce-reload
действие, что означаетreload
, что служба поддерживает его, аrestart
служба не поддерживает перезагрузку.Я не уверен, как это переводится в современный мир Ubuntu.
источник
Чтобы расширить عبد النور التومي, ответьте с моим опытом работы с systemd.
В systemd всякий раз, когда процесс запускается, он запускается в контексте systemd, наиболее наглядным примером этого являются переменные окружения, определенные в его модульном файле.
Поэтому, когда вы отправляете
systemctl reload [someservice]
сигнал, он отправляет сигнал службе, чтобы она корректно перезагрузилась, если это поддерживается. Если нет, процесс просто проигнорирует сигнал. Это настраивается, хотя.Что я имею в виду изящно? запускать новых работников с новой конфигурацией или кодом и останавливать старых работников, когда они заканчивают обслуживать текущие запросы, если таковые имеются.
И если вы сделаете
systemctl restart [someservice]
это, он скажет systemctl, чтобы служба остановилась, уничтожила текущий контекст systemd, создала новый и снова запустила службу. Это имеет смысл, например, для перезагрузки переменных среды в контексте systemd или если перезагрузка не поддерживается.Надеюсь, это прояснит немного, и если я ошибаюсь, пожалуйста, дайте мне знать.
источник
В настоящее время, если служба требует удаления (например, изменен файл конфигурации), вы можете уведомить службу, но это приводит к перезапуску. Было бы хорошо, если бы перезагрузка была сделана, если служба уже работала (хотя я предполагаю, что некоторые службы должны быть перезапущены для одних файлов, перезагрузки для других).
Самый сложный пример, который я могу вспомнить, это что-то вроде Apache. Обычно вы можете просто попросить его перезагрузить, но иногда вам нужно запросить перезагрузку (например, если вы добавляете / удаляете модули).
источник
Postgres является хорошим примером для больших различий между перезагрузкой и перезапуском, потому что последним нужно отключить все клиенты базы данных.
когда соединения не должны откатываться, вы можете сначала остановить службу без «--force», используя pg_ctlcluster .
в / etc/postgres/ndomversion automotive/ndomdbname‹/postgresql.conf и на http://www.postgresql.org/docs/manuals/ каждый параметр имеет примечание типа «Этот параметр можно установить только при запуске сервера. "
источник