Назад | Перейти на главную страницу

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}

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

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

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

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

TL; DR

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