首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RHEL 7如何在关闭/重新启动系统之前运行长期脚本d

RHEL 7如何在关闭/重新启动系统之前运行长期脚本d
EN

Unix & Linux用户
提问于 2015-10-08 14:57:14
回答 3查看 6.7K关注 0票数 2

我试图找到在RedHat7中启动关机/重新启动之前如何运行脚本的解决方案。当我关闭或重新启动服务器时,我需要正确关闭SAP数据库。

SAP关机的脚本需要3-4分钟,但是系统的关闭非常快,-it意味着RedHat杀死了所有进程。

我的

systemd sap.service是:

代码语言:javascript
复制
[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

正如我在关机日志数据库中所看到的,没有正确关闭日志数据库:

代码语言:javascript
复制
Checking ADA Database
-------------------------------------------
setTrace: false
J2EE Database is not available

你能帮帮我吗?

谢谢

伊沃

编辑21.10.2015:

我转到了下一步--它运行得更好了,但仍然不正确:

[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

代码语言:javascript
复制
  `[Install] WantedBy=graphical.target`

下面是秒针脚本:

#!/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分钟。关机脚本永远不会完成:

我能追踪到我的树液是如何关闭的吗?服务?

谢谢。。

EN

回答 3

Unix & Linux用户

发布于 2015-10-08 15:02:07

尝试更改单元文件中的TimeoutStopSec值。缺省值由/etc/systemd/system.confDefaultTimeoutStopSec条目中设置(我的系统将其设置为90)。您可以将TimeoutStopSec=0设置为完全禁用超时(如果脚本不终止,则可能挂起关机),或者传递一个更大的值,允许停止脚本完全完成。

票数 2
EN

Unix & Linux用户

发布于 2015-10-21 14:15:08

好的问题是环境问题:

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
EN

Unix & Linux用户

发布于 2021-05-03 13:34:48

在我的Oracle DB被关闭之前,我有类似的执行脚本的需求,我想我应该在这里分享我的发现,以防其他人在同一篇文章上寻找解决方案。

在我看来,oracle的oracle-ohasd.service似乎从未彻底关闭过数据库。但是不管oracle db是否干净地关闭,我希望我的脚本在执行oracle-ohasd.service之前执行这个节点的DG切换和OEM断电。所以我就是这么做的。

我申报了两项服务。

WDOracle-快门服务-这处理执行我的关闭前脚本。要让它正常工作,关键是在我的WDOracle-快门服务中添加“and =WDOracle-快门. provided”到oracle提供"oracle-ohsasd.service“,并在我的WDOracle-provided.服务中添加"After=oracle-ohasd.service”。在我的WDOracle-快门服务中可能也需要“were、Requires和RequiresMountsFor”,但在oracle中添加“were=WDOracle-快门下降.Requires”是我为使其正常工作所做的最后一步。

WDOracle--db.service--是在服务器和数据库启动后删除我的OEM中断的服务。它还检查OEM中的生命周期状态,并根据DB_ROLE是主备用还是物理备用来调整它。

以下是我对所涉及的3项服务的设置。

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

代码语言:javascript
复制
[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

代码语言:javascript
复制
[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

cat /etc/system/system/oracle-ohasd.service

代码语言:javascript
复制
[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
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/234786

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档