我想防止直接使用启动/停止 bash 脚本而不使用“systemctl 启动/停止服务”
有没有一种 bash 方法可以将其插入到脚本中?
答案1
您可以在脚本中检查它是否已被 SystemD 调用,例如,如果没有调用,则中止并显示错误消息,或者调用systemctl
。
有多种方法可以确定父级,例如:
很简单但不是100%确定:检查PPID是否为1:
grep -q '^PPid: *1$' /proc/$$/status
systemctl status $$ >/dev/null 2>&1
(SystemD 进程的退出代码为 0)在 SystemD 单元文件中设置唯一的环境变量并检查它
if [ 'yes' != "$STARTED_BY_SYSTEMD" ]; then ...