RHEL 7 como executar o script de longa data antes do desligamento / reinicialização systemd

2

Estou tentando encontrar a solução como o script de execução antes do encerramento / reinicialização é iniciado no RedHat7. Eu preciso desligar corretamente o banco de dados SAP quando eu estou desligando ou reinicializando o servidor.

O script para o desligamento do SAP leva 3-4 minutos, mas o desligamento do sistema é muito rápido - significa que o RedHat elimina todos os processos imediatamente ...

meu

systemd sap.service é:

[Unit]
Description=Shutdown SAP
Before=shutdown.target reboot.target halt.target

[Service]
ExecStart=/bin/true
ExecStop=/usr/sap/stopsap
RemainAfterExit=true
KillMode=none

[Install]
WantedBy=multi-user.target

Como eu vejo no log de desligamento - o banco de dados não foi encerrado corretamente:

Checking ADA Database
-------------------------------------------
setTrace: false
J2EE Database is not available

Você pode me ajudar?

Obrigado

Ivo

Editar 21.10.2015:

Mudei para o próximo passo - está funcionando melhor, mas ainda não corretamente:

[Unit] Description=SAP sluzba After=network.target sshd.target Wants=network.target sshd.service [Service] Type=simple RemainAfterExit=true Environment="SAPSYSTEMNAME=RH7" "HOST=cz-brn1-rh7" "HOME=/home/rh7adm" "PATH=/sapdb/clients/RH7/bin:/sapdb/programs/bin:/usr/lib64/qt-.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/clients/RH7/lib" "RSEC_SSFS_DATAPATH=/usr/sap/RH7/SYS/global/security/rsecssfs/data" "RSEC_SSFS_KEYPATH=/usr/sap/RH7/SYS/global/security/rsecssfs/key" KillMode=none SendSIGKILL=no TimeoutSec=5min TimeoutStopSec=5min User=rh7adm Group=sapsys ExecStart=/usr/sap/startsap ExecStop=/usr/sap/stopsap
[Install] WantedBy=graphical.target

Aqui está o script stopsap:

#!/bin/bash date >> /usr/sap/stopsap.log; /usr/sap/RH7/SYS/exe/uc/linuxx86_64/stopsap >> /usr/sap/stopsap.log 2>&1; whoami >> /usr/sap/stopsap.log;

J2EE Database is running See logfile /home/rh7adm/JdbcCon.log stopping the SAP instance J28 Shutdown-Log is written to /home/rh7adm/stopsap_J28.log /usr/sap/RH7/J28/exe/sapcontrol -prot NI_HTTP -nr 28 -function Stop Instance on host cz-brn1-rh7 stopped Waiting for cleanup of resources..................................................................................................................................................

e aqui ele ficou preso por 5 minutos .. Script de desligamento nunca termina :(

Posso traçar como foi desligar minha seiva. serviço?

Obrigado ..

    
por Ivo Jedinečný 08.10.2015 / 16:57

2 respostas

2

Tente alterar o valor TimeoutStopSec no arquivo da unidade. O padrão é definido por /etc/systemd/system.conf na entrada DefaultTimeoutStopSec (meu sistema tem como 90s). Você pode definir TimeoutStopSec=0 para desativar completamente o tempo limite (pode travar seu desligamento se o script não terminar) ou passar um valor maior que permita que o script de parada seja concluído completamente.

    
por 08.10.2015 / 17:02
0

O problema está no ambiente:

a definição correta de sap.service é:

[Unit] Description=SAP sluzba After=network.target sshd.target Wants=network.target sshd.service [Service] Type=simple RemainAfterExit=true Environment="HOSTNAME=cz-brn1-rh7" "SAPSYSTEMNAME=RH7" "HOST=cz-brn1-rh7" HOME=/home/rh7adm" PATH=/sapdb/clients/RH7/bin:/sapdb/programs/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/clients/RH7/lib" "RSEC_SSFS_DATAPATH=/usr/sap/RH7/SYS/global/security/rsecssfs/data" "RSEC_SSFS_KEYPATH=/usr/sap/RH7/SYS/global/security/rsecssfs/key" KillMode=none SendSIGKILL=no TimeoutSec=5min TimeoutStopSec=5min User=rh7adm Group=sapsys ExecStart=/usr/sap/startsap ExecStop=/usr/sap/stopsap [Install] WantedBy=graphical.target

    
por 21.10.2015 / 16:15