寻找一种在不使用 systemctl 的情况下禁止启动/停止 bash 脚本的方法

寻找一种在不使用 systemctl 的情况下禁止启动/停止 bash 脚本的方法

我想防止直接使用启动/停止 bash 脚本而不使用“systemctl 启动/停止服务”

有没有一种 bash 方法可以将其插入到脚本中?

答案1

您可以在脚本中检查它是否已被 SystemD 调用,例如,如果没有调用,则中​​止并显示错误消息,或者调用systemctl

有多种方法可以确定父级,例如:

  1. 很简单但不是100%确定:检查PPID是否为1:

    grep -q '^PPid: *1$' /proc/$$/status
    
  2. systemctl status $$ >/dev/null 2>&1(SystemD 进程的退出代码为 0)
  3. 在 SystemD 单元文件中设置唯一的环境变量并检查它

    if [ 'yes' != "$STARTED_BY_SYSTEMD" ]; then ...
    

相关内容