如何判断脚本是从 systemd 还是从用户调用的?
我为一个老式的守护进程创建了一个服务。我们刚刚切换到 systemd,我的一些管理员喜欢直接调用 rc-script。在机器重新启动的情况下,这不会很好地工作。Systemd 不会尊重 ,PIDFile=因为新启动的守护进程不是它的服务 cgroup 的一部分。
我添加了服务文件和 rc_script。我不能因用户 ID 而异,因为要使用脚本,用户必须是foobaruser.
停止服务现在有问题,因为 systemd 会从删除的 pid 文件中识别出这一点。
那么如何确定脚本是否是从 systemd 调用的呢?
[Unit]
Description=Foobar Service
After=syslog.target network.target
[Service]
Type=forking
User=foobaruser
LimitNOFILE=60000
LimitNPROC=8000
TasksMax=8000
PIDFile=/local/foobar/foo.pid
ExecStart=/opt/foobar/rc_script start
ExecStop=/opt/foobar/rc_script stop
TimeoutSec=100
TimeoutStopSec=300
KillMode=none
RemainAfterExit=no
Environment=LANG=de_DE.UTF-8
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)
#!/bin/bash
case $1 in
start)
VAR_IS_SYSTEMD=$( ... script to check if bash is run from systemd ... )
if [ "$VAR_IS_SYSTEMD" = false ] ; then
sudo systemctl …Run Code Online (Sandbox Code Playgroud)