web-dev-qa-db-ja.com

RHEL 7systemdをシャットダウン/再起動する前に長時間のスクリプトを実行する方法

RedHat7でシャットダウン/再起動の前にスクリプトを実行する方法を見つけようとしています。サーバーをシャットダウンまたは再起動するときに、SAPデータベースを正しくシャットダウンする必要があります。

SAPシャットダウンのスクリプトには3〜4分かかりますが、システムのシャットダウンは非常に高速です。つまり、RedHatはすべてのプロセスを即座に強制終了します...

僕の

systemdsap.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

シャットダウンログにあるように、データベースは正しくシャットダウンされませんでした。

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

手伝って頂けますか?

ありがとうございました

Ivo

2015年10月21日編集:

私は次のステップに移りました-それはうまく機能していますが、それでも正しくありません:

[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

これが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..................................................................................................................................................

そしてここでそれはその5分間立ち往生しました..シャットダウンスクリプトは決して終了しません:(

樹液がどのようにシャットダウンしたかを追跡できますか?サービス?

ありがとうございました..

2
Ivo Jedinečný

ユニットファイルのTimeoutStopSec値を変更してみてください。デフォルトは、DefaultTimeoutStopSecエントリの/etc/systemd/system.confによって設定されます(私のシステムでは90秒です)。 TimeoutStopSec=0を設定して、タイムアウトを完全に無効にするか(スクリプトが終了しない場合はシャットダウンがハングする可能性があります)、停止スクリプトを完全に終了できるように大きな値を渡すことができます。

2
Tom Hunt

問題は環境にありました:

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

0
Ivo Jedinečný