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

Как узнать, какие команды применимы для службы с systemctl?

# systemctl reload nagios.service
failed to reload nagios.service: Job type reload is not applicable for unit nagios.service.

С помощью init.d вы можете запустить сценарий без команды и просмотрите информацию об использовании соответствующих команд:

# /etc/init.d/nagios 
Usage: /etc/init.d/nagios {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}
6
задан 10 February 2016 в 08:50
1 ответ

systemctl не похож на старые добрые сценарии инициализации. Согласно его странице man , он поддерживает следующие команды, похожие на команды init-script, которые вы ищете:

  • start Запуск (активация) одного или нескольких модулей, указанных в командной строке .
  • stop Остановить (деактивировать) один или несколько модулей, указанных в командной строке.
  • reload Запрашивает все модули, перечисленные в командной строке, перезагрузить их конфигурацию.
  • restart Перезапустить один или несколько единиц, указанных в командной строке. Если блоки еще не запущены, они будут запущены.
  • try-restart Перезапустите один или несколько блоков, указанных в командной строке, если блоки работают. Это ничего не делает, если агрегаты не работают. Обратите внимание, что для совместимости со сценариями инициализации Red Hat команда condrestart эквивалентна этой команде.
  • reload-or-restart Перезагрузите один или несколько модулей, если они это поддерживают. Если нет, перезапустите их. Если блоки еще не запущены, они будут запущены.
  • reload-or-try-restart Перезагрузите один или несколько блоков, если они это поддерживают. Если нет, перезапустите их. Это ничего не делает, если агрегаты не работают. Обратите внимание, что для совместимости со сценариями инициализации SysV команда force-reload эквивалентна этой команде.

Таким образом, группа этих команд по существу сводится к start , stop и перезагружают . Поскольку start и stop необходимы для большинства типов служб (и обычно вы знаете, поддерживает ли служба один из них), единственное, о чем вы можете захотеть узнать, - это если данная служба поддерживает перезагрузку или нет.

В большинстве случаев вы хотите, чтобы она была либо перезагружена, либо перезапущена: затем используйте systemctl reload-or-restart nagios . Чтобы действительно узнать, какая команда (если есть) выполняется для перезагрузки, вы можете заглянуть в ее служебный файл. Обычно его можно найти в / lib / systemd / system / или / usr / lib / systemd / system и называется $ SERVICENAME.service (в вашем case nagios.service ). Этот файл содержит команды для запуска, остановки и, возможно, перезагрузки службы, а именно ExecStart , ExecStop и ExecReload . Если вас это интересует, вы можете выполнить grep ExecReload /lib/systemd/system/nagios.service, чтобы узнать, поддерживает ли служба перезагрузку или нет.

TL; DR

systemctl по существу поддерживает start , остановить и перезагрузить . Чтобы узнать, поддерживает ли Сервис перезагрузку, просто попробуйте. Если вам нужно перезагрузить несколько служб в сценарии или чем-то еще, используйте reload-or-restart , который перезагружает службу, если в ней сохранена команда ExecReload , в противном случае она перезапускается.

6
ответ дан 3 December 2019 в 00:28

Теги

Похожие вопросы