小编not*_*-jj的帖子

Systemd:判断脚本是由 systemd 还是由用户运行

如何判断脚本是从 systemd 还是从用户调用的?

我为一个老式的守护进程创建了一个服务。我们刚刚切换到 systemd,我的一些管理员喜欢直接调用 rc-script。在机器重新启动的情况下,这不会很好地工作。Systemd 不会尊重 ,PIDFile=因为新启动的守护进程不是它的服务 cgroup 的一部分。

我添加了服务文件和 rc_script。我不能因用户 ID 而异,因为要使用脚本,用户必须是foobaruser.

停止服务现在有问题,因为 systemd 会从删除的 pid 文件中识别出这一点。

那么如何确定脚本是否是从 systemd 调用的呢?

foob​​ar.service

[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)

/opt/foobar/rc_script 骨架

#!/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)

linux bash systemd

4
推荐指数
2
解决办法
3954
查看次数

标签 统计

bash ×1

linux ×1

systemd ×1