点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
亲爱的Linux/SAP专家
无论何时执行命令systemctl reboot-第一步,它都会杀死所有SAP进程。
稍后会运行sapinit服务以从/etc/init.d位置启动SAP。
下面是我的要求,并尝试了几种选择,但没有一个起作用。
我需要使用sapstop命令或sapinit stop命令通过服务或嵌入到现有脚本中来关闭SAP进程,而不是使用Reboot命令杀死SAP进程。 有什么办法可以做到这一点?
注意:我在/etc/systemd/system或/usr/lib/systemd/system_shutdown或/usr/lib/systemd/system下创建了新服务,以在重启命令终止进程之前停止SAP并停止运行,原因是 reboot命令在到达我的服务/脚本之前已经杀死了SAP进程。
有什么想法或建议吗?
我们将不胜感激。
感谢和问候,
KK
[Unit]说明=关闭之前
DefaultDependencies =否
RequiresMountsFor =/usr/sap/home/sapmnt/
在= shutdown.target后重新启动.target网络。服务
[服务] KillUserProcesses =否
KillMode = none
SendSIGKILL =否
RemainAfterExit =是
TimeoutStopSec = 5分钟
TimeoutSec = 5分钟
Type = oneshot
ExecStart =/usr/lib/systemd/system-shutdown/NFGsapstop
[安装]
WantedBy =关闭。目标重启。目标多用户。目标网络。目标
我遇到了完全相同的问题,最终找到了解决方案。 在用户片之外启动sapstartsrv。 然后,由它启动的进程不再属于用户片,因此不会在关闭时立即终止。
我实现此目标的方式是拥有以 adm用户(.service文件中的User = adm)运行的系统服务。 如果该服务正在运行,它将重新启动sapstartsrv,从而使该进程现在成为此系统服务的cgroup的一部分。 sapstartsrv启动的所有进程最终都属于同一cgroup。
您还可以使用此方法将所有sapstartsrv进程更改为系统片,尽管我认为最好将它们放在更有用的位置,例如您自己的停止/启动服务:
亲爱的戴尔威尔逊,
您在system.slice级别上将processid回显到cgroup.procs的方法运行良好,并获得了预期的结果。
应在重新启动开始之前提前完成processid的回显,我们将所有SAP进程ID手动回显到cgroup.procs以上,然后尝试重新启动命令-重启命令使用sapinit脚本正常停止了SAP进程,而不会终止任何 程序。
问题:
1。 如何使用新ID在系统级别自动执行cgroup.procs文件? 重新启动后,现在所有SAP进程都有新的proc ID。
2。 我不理解您在.service文件中添加User = adm的其他选择。 您在这里谈论/etc/services吗?
您要引用的.service文件在哪里
感谢和问候,
KK
嗨,坎南,
这是SAP支持人员针对同一问题的答案。
顺便说一句,它对我们没有用。
请尝试发布您的结果
"带有系统的sapinit脚本(及其启动的进程)位于用户切片中。通常,系统在杀死进程之前只允许90秒停止这些进程。
SUSE为这种情况提供了一种解决方法: https://www.suse.com/de-de/support/kb/doc/?id=7022671
KBA是在HA群集的上下文中描述的,但是它也可以以相同的方式应用于独立系统。 我建议您先在测试环境中尝试一下。"
谢谢
Moti
尊敬的Moti,
我们有Red Hat RHEL 7版本,您的解决方案也适用于我们。 我唯一的问题是在下面
该解决方案是否是RHEL7的受支持解决方案? 另外,我需要彻底测试这种情况,以便看不到其他影响。
感谢您的建议。
KK
一周热门 更多>