1 Star 2 Fork 0

GXDE OS/gxde-k9

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
example.slimy.example 1.92 KB
一键复制 编辑 原始数据 按行查看 历史
#!/bin/bash
# ============ 可配置变量 ============
# 目标程序路径(需要运行的可执行文件或命令)
TARGET_PROCESS="echo I'm running"
# 需要如果 systemd 正在运行就不执行的话,请填写任意字符来启用
# 如启用,若检测到 systemd 正在运行,则直接退出脚本。若不启用则会不检测,继续执行
DONT_RUN_IF_SYSTEMD_EXIST=""
# ====== 若无特殊需求,以下请默认 =======
# PID 文件目录(从环境变量 PID_DIR 获取,默认为用户配置目录)
PID_DIR="${PID_DIR:-/tmp/GXDE/gxde-k9/}"
# 自动生成 PROCESS_NAME 为当前 .slimy 文件名(去掉扩展名)
PROCESS_NAME=$(basename "$0" .slimy)
# ============ 脚本逻辑 ============
if [[ -n "$DONT_RUN_IF_SYSTEMD_EXIST" ]] && [ -d /run/systemd/system ]; then
exit 0 # We don't need K9 to take over systemd work if DONT_RUN_IF_SYSTEMD_EXIST
fi
# 确保 PID 文件目录存在
mkdir -p "$PID_DIR" || {
echo "[$PROCESS_NAME] 错误:无法创建 PID 文件目录 $PID_DIR!"
exit 1
}
# 生成 PID 文件路径
PID_FILE="$PID_DIR/$PROCESS_NAME.pid"
# 检查 PID 文件是否存在且有效
if [[ -f "$PID_FILE" ]]; then
PID=$(cat "$PID_FILE" 2>/dev/null)
if [[ -n "$PID" && -e "/proc/$PID" ]]; then
# 如果是命令,简单校验 PID 是否存活
# echo "[$PROCESS_NAME] 检测到命令进程,PID: $PID 正在运行。"
exit 0
else
echo "[$PROCESS_NAME] 无效的 PID 文件,清理:$PID_FILE"
rm -f "$PID_FILE"
fi
fi
# 如果 PID 文件不存在或无效,启动目标进程
echo "[$PROCESS_NAME] 目标进程未运行,正在启动:$TARGET_PROCESS"
bash -c "$TARGET_PROCESS" &
NEW_PID=$!
if [[ -n "$NEW_PID" && -e "/proc/$NEW_PID" ]]; then
echo "$NEW_PID" > "$PID_FILE"
echo "[$PROCESS_NAME] 目标进程启动成功,PID: $NEW_PID"
else
echo "[$PROCESS_NAME] 错误:目标进程启动失败!"
exit 1
fi
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/GXDE-OS/gxde-k9.git
git@gitee.com:GXDE-OS/gxde-k9.git
GXDE-OS
gxde-k9
gxde-k9
master

搜索帮助