gpt4 book ai didi

systemd - 阻止 systemd 在重启时杀死用户切片

转载 作者:行者123 更新时间:2023-12-02 18:32:17 26 4
gpt4 key购买 nike

我的解决方案(到目前为止)是从公共(public) session 中评论 pam_systemd.so 。一切都在 system.slice 中运行,没有对照组。我还不确定这会产生什么影响,但至少一切都会运行,保持运行,并彻底关闭。

我们的软件是内部开发的,并在 SLES 上运行。是java、oracle、sysadmin的tomcat网页等。我们有一个一直在使用的脚本来启动所有这些进程。在 systemd 之前一直工作得很好。

“env”脚本从配置文件中收集信息,然后调用其他脚本来启动 java、oracle 等。这些其他脚本“su”给用户就像“oracle”一样。

我有一个用于这个“env”脚本的单元并开始工作。如果我运行“systemctl stop env”,则停止工作。

我的问题是,重新启动时,第一件事是所有用户都被杀死,所有数据库、java进程等也被杀死。基本上使数据库崩溃,因为它们确实没有很好地停止。然后车站尝试运行但无法运行,因为东西坏了。

我尝试添加 KillUserProcesses=no、enable-linger、KillExcludeUsers=、systemd-run --scope,但它们仍然被杀死。

有没有办法让 systemd 在重新启动时不立即杀死用户,或者必须找出所有子脚本的单位?

下面的内容只是为了复制问题 - 而不是实际运行的脚本。

我能够在 SLES12SP2 (systemd 228) 上使用以下命令复制它。我 build 了一台 Arch 机器,但它没有杀人。

我注意到不同的一件事是 sleep 600 是 sles12 上的用户切片,但是 arch 上的系统切片。

SLES12 上的 systemd-cgls:

`-user.slice
|-user-1000.slice
| |-user@1000.service
| | `-init.scope
| | |-1362 /usr/lib/systemd/systemd --user
| | `-1371 (sd-pam)
| `-session-c1.scope
| `-1383 sleep 600

在 Arch 上:

└─system.slice
├─env.service
│ └─276 sleep 600

用户切片和 session 甚至不是使用 Arch 上的 su 创建的。

我的服务文件:

[Unit]
Description=Starts and stops applications needed for an environment
Wants=network.target httpd.service
After=network.target httpd.service sshd.service

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/pro/bin/sys/services/envStart.sh start
ExecStop=/pro/bin/sys/services/envStart.sh stop
ExecReload=/pro/bin/sys/services/envStart.sh restart
TimeoutSec=3600

[Install]
WantedBy=multi-user.target

envStart 脚本:

#!/bin/bash

case $1 in
start)
/pro/bin/sys/services/sleep.sh start
;;
stop)
/pro/bin/sys/services/sleep.sh stop
;;
esac

和 sleep 脚本:

#!/bin/bash

case $1 in
start)
echo "starting sleep"
su sleepuser -c "sleep 600 &"
;;
stop)
echo "stopping sleep"
sleep 300
;;
esac

最佳答案

我遇到了相同/类似的问题。对我来说问题是用户切换,导致所有进程在 user.slice 中启动,而不是在 system.slice 中启动。显然,user.slice 中不应该运行任何“重要”的内容,而 systemd 只是在关闭/重新启动时杀死所有(?)进程。我通过删除启动脚本中的所有用户开关(su/sudo)并使用单元文件中的用户指令(User=xxx)解决了这个问题。

关于systemd - 阻止 systemd 在重启时杀死用户切片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42913549/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com