Начиная с Joseph R хотел, чтобы я расширился, я буду. При использовании VIM (потому что это - то, что я знаю больше, чем Vi), можно добавить это к Вашему ~/.vimrc
файл.
if @% == "scratch"
silent edit /tmp/scratch
endif
Tada, теперь у Вас есть царапина везде!
Попробуйте изменить значение TimeoutStopSec
в файле блока. Значение по умолчанию задается в /etc/systemd/system.conf
в записи DefaultTimeoutStopSec
(в моей системе оно равно 90s). Вы можете установить TimeoutStopSec=0
, чтобы полностью отключить таймаут (может повесить ваше выключение, если сценарий не завершится), или передать большее значение, которое позволит сценарию остановки полностью завершиться.
Хорошо, проблема была в среде:
правильное определение 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
У меня была аналогичная потребность в выполнении скрипта до отключения моей БД 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