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

Начиная с Joseph R хотел, чтобы я расширился, я буду. При использовании VIM (потому что это - то, что я знаю больше, чем Vi), можно добавить это к Вашему ~/.vimrc файл.

if @% == "scratch"
    silent edit /tmp/scratch
endif

Tada, теперь у Вас есть царапина везде!

2
21.10.2015, 15:00
3 ответа

Попробуйте изменить значение TimeoutStopSec в файле блока. Значение по умолчанию задается в /etc/systemd/system.conf в записи DefaultTimeoutStopSec (в моей системе оно равно 90s). Вы можете установить TimeoutStopSec=0, чтобы полностью отключить таймаут (может повесить ваше выключение, если сценарий не завершится), или передать большее значение, которое позволит сценарию остановки полностью завершиться.

2
27.01.2020, 22:12

Хорошо, проблема была в среде:

правильное определение sap.service:

[Unit] Описание = SAP sluzba After = network.target sshd.target Wants = network.target sshd.service [Service] Тип = простой RemainAfterExit = true Environment = "HOSTNAME = cz-brn1-rh7" "SAPSYSTEMNAME = RH7" "HOST = cz-brn1-rh7" HOME = / home / rh7adm "PATH = / sapdb / clients / RH7 / bin: / sapdb / программы / bin: /usr/lib64/qt-3.3/bin: / usr / local / bin: / bin: / usr / bin: / usr / local / sbin: / usr / sbin: / usr / sap / RH7 / SYS / exe / uc / linuxx86_64: / usr / sap / RH7 / SYS / exe / run: / home / rh7adm :. " «DIR_LIBRARY = / usr / sap / RH7 / SYS / exe / run» «LD_LIBRARY_PATH = / usr / sap / RH7 / SYS / exe / run: / usr / sap / RH7 / SYS / exe / uc / linuxx86_64: / sapdb / клиенты / RH7 / lib "" RSEC_SSFS_DATAPATH = / usr / sap / RH7 / SYS / global / security / rsecssfs / data "" RSEC_SSFS_KEYPATH = / usr / sap / RH7 / SYS / global / security / rsecssfs / key "{{1} } KillMode = none SendSIGKILL = no TimeoutSec = 5min TimeoutStopSec = 5min User = rh7adm Group = sapsys ExecStart = / usr / sap / startap ExecStop = / usr / sap / stopap [Установить] WantedBy = graphical.target

0
27.01.2020, 22:12

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

Мне кажется, что оракул Oracle -ohasd.service никогда корректно не завершает работу базы данных. Но независимо от того, корректно ли завершил работу oracle db или нет, я хочу, чтобы мой сценарий выполнял DG Switchover и OEM Blackout этого узла до выполнения oracle -ohasd.service. Итак, вот что я сделал.

У меня объявлены две службы.

WDOracle -shutdown.service -Это обрабатывает выполнение моих предварительных -сценариев завершения работы. Ключом к тому, чтобы заставить это работать, было добавление «Before = WDOracle -shutdown.service» к предоставленному оракулом «oracle -ohsasd.service» и наличие «After = oracle -ohasd.service» в моем WDOracle -shutdown.service. «Before, Requires и RequiresMountsFor», вероятно, также были необходимы в моем WDOracle -shutdown.service, но добавление «Before=WDOracle -shutdown.service» в оракул предоставило «oracle -ohasd.service» это последний шаг, который я сделал, чтобы заставить его работать.

WDOracle -db.service -Это служба, которая устраняет отключения OEM после запуска резервного копирования сервера и баз данных. Он также проверяет состояние жизненного цикла в OEM-производителе и корректирует его в зависимости от того, является ли ROLE DB _основной или физической резервной.

Вот мои настройки для трех задействованных служб.

cat /usr/lib/systemd/system/WDOracle -shutdown.service

[Unit]
Description=Oracle Blackout Creation
Before=shutdown.target reboot.target halt.target
After=oracle-ohasd.service
Requires=network-online.target network.target multi-user.target oracle-ohasd.service
RequiresMountsFor=/opt/apps/oem /opt/apps/oracle /opt/apps/grid

[Service]
KillMode=none
ExecStart=/bin/true
ExecStop=/opt/apps/oracle/scripts/WDOracle-db.sh stop
RemainAfterExit=yes
Type=oneshot

[Install]
WantedBy=multi-user.target

cat /etc/systemd/system/WDOracle -db.service

[Unit]
Description=WD Oracle Non-Prod DB service
After=network-online.target remote-fs.target autofs.service oracle-ohasd.service

[Service]
User=root
Type=forking
ExecStart=/opt/apps/oracle/scripts/WDOracle-db.sh start
TimeoutSec=0
RemainAfterExit=true

[Install]
WantedBy=multi-user.target

кошка /etc/systemd/system/oracle -ohasd.service

[Unit]
Description=Oracle High Availability Services
After=network-online.target remote-fs.target autofs.service
Before=WDOracle-shutdown.service
Wants=network-online.target remote-fs.target

[Service]
ExecStart=/etc/init.d/init.ohasd run >/dev/null 2>&1 </dev/null
ExecStop=/etc/init.d/init.ohasd stop >/dev/null 2>&1 </dev/null
TimeoutStopSec=60min
Type=simple
Restart=always

KillMode=process
SendSIGKILL=yes

StartLimitBurst=0

[Install]
WantedBy=multi-user.target graphical.target
-1
03.05.2021, 13:34

Теги

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