Таймер systemd должен запускать ExecStop при выключении / перезагрузке

Сценарий заключается в том, что у меня есть система CentOS v7.0, в которой может быть до четырех экземпляров JIRA, экземплярами являются Production, Staging, Development и BETA.

Когда я запускаю систему, я хочу, чтобы все четыре экземпляра службы запускались в шахматном порядке на расстоянии 100 секунд (каждый экземпляр JIRA занимает около 80 секунд, чтобы начать). Я смог решить старт-старт, используя таймеры systemd (которые, безусловно, намного более элегантны, чем код оболочки, который я использовал в SysV-inits). Каждая служба работает в своем собственном срезе и имеет соответствующий уровень QOS, установленный с помощью элементов управления срезами. Все работает очень хорошо.

Проблема, с которой я сталкиваюсь, заключается в том, что когда я запускаю остановку / завершение работы / перезагрузку, только сценарии jira _ *. Timer вызывают сценарий shutdown systemd, а экземпляры JIRA не работают корректно.

Как я могу запустить действие ExecStop в сервисных подразделениях jira _ *. Во время выключения / перезагрузки?

PRD = 5sec delay STG = 100sec delay DEV = 200sec delay EAP = 300sec delay 

/usr/lib/systemd/system/jira_stg.service

 [Unit] Description=Atlassian JIRA Staging instance Documentation=https://confluence.atlassian.com/display/JIRA/JIRA+Documentation After=mysql.service nginx.service Requires=mysql.service nginx.service Before=shutdown.target reboot.target halt.target [Service] Type=forking ExecStart=/jira/stg/catalina.home/bin/startup.sh ExecStop=/jira/stg/catalina.home/bin/shutdown.sh 60 TimeoutSec=300 User=ujirastg Group=gjirastg Slice=jira_stg.slice CPUAccounting=true CPUShares=600 MemoryAccounting=true MemoryLimit=1200M BlockIOAccounting=true BlockIOWeight=200 [Install] WantedBy=multi-user.target 

/usr/lib/systemd/system/jira_stg.timer

 [Unit] Description=Atlassian JIRA Staging instance service startup after delay [Timer] # Time to wait after systemd starts before we start the service OnStartupSec=100s AccuracySec=5s Unit=jira_stg.service [Install] WantedBy=multi-user.target 

Я только включаю единицы jira_ * .timer, поскольку я обнаружил, что если бы я включил блоки jira_ * .service, что таймеры были проигнорированы, и все попыталось начать сразу.

 systemctl enable jira_eap.timer systemctl enable jira_dev.timer systemctl enable jira_stg.timer systemctl enable jira_prd.timer 

Из журнала, показывающего, что таймеры запускаются во время перезагрузки.

 jira systemd[1]: Stopping Flexible branding. jira systemd[1]: Stopped Flexible branding. jira systemd[1]: Stopping Timers. jira systemd[1]: Stopped target Timers. jira systemd[1]: Stopping Atlassian JIRA Early Access Program instance service startup after delay. jira systemd[1]: Stopped Atlassian JIRA Early Access Program instance service startup after delay. jira systemd[1]: Stopping Atlassian JIRA Development instance service startup after delay. jira systemd[1]: Stopped Atlassian JIRA Development instance service startup after delay. jira systemd[1]: Stopping Atlassian JIRA Staging instance service startup after delay. jira systemd[1]: Stopped Atlassian JIRA Staging instance service startup after delay. jira systemd[1]: Stopping Daily Cleanup of Temporary Directories. jira systemd[1]: Stopped Daily Cleanup of Temporary Directories. jira systemd[1]: Stopping Atlassian JIRA Production instance service startup after delay. jira systemd[1]: Stopped Atlassian JIRA Production instance service startup after delay. jira systemd[1]: Stopping Sockets. jira systemd[1]: Stopped target Sockets. 

One Solution collect form web for “Таймер systemd должен запускать ExecStop при выключении / перезагрузке”

Я нашел несколько хакерское решение, упомянутое в документах systemd, которые, похоже, работают хорошо.

http://www.freedesktop.org/software/systemd/man/systemd-halt.service.html

Непосредственно перед выполнением фактической остановки системы / выключения / перезагрузки / kexec systemd-shutdown запустит все исполняемые файлы в / usr / lib / systemd / system-shutdown / и передаст им один аргумент: либо «остановить», «отключить питание», «перезагрузить» "или" kexec ", в зависимости от выбранного действия. Все исполняемые файлы в этом каталоге выполняются параллельно, и выполнение действия не продолжается до завершения всех исполняемых файлов.

/usr/lib/systemd/system-shutdown/jira_shutdown.sh

 #!/bin/sh case "$1" in halt|poweroff|reboot|kexec) # Shutdown any running JIRA instances for ENVIRONMENT in eap dev stg prd do STATUS=$(/usr/bin/systemctl is-active jira_${ENVIRONMENT}.service) if [ ${STATUS} == "active" ]; then /usr/bin/systemctl stop jira_${ENVIRONMENT}.service fi done ;; *) ;; esac 
  • Запуск службы до входа пользователя в систему
  • Как установить скорость и дуплексную скорость Ethernet
  • группы журнальных процессов
  • Проблема с установкой дополнительных разделов после обновления ядра
  • Написание собственного демона. systemd error: Не удалось прочитать PID из файла: Недопустимый аргумент
  • Конфигурация Systemd для более позднего установленного зашифрованного тома с работающими на нем службами
  • pam_winbind регистрирует пароли
  • Перезагрузка системы во время запуска при кажущейся случайной точке при каждой загрузке
  • Интерпретация вывода из systemd-resolve -status
  • Стабильное распределение серверов без systemd (для OpenVZ)?
  • Выполнение chdir перед запуском службы systemd
  • Linux и Unix - лучшая ОС в мире.