后台运行时可能缺少必要的环境变量(如PATH),导致命令无法找到,也可能是后台运行时因挂载延迟导致源目录不可访问。
可以考虑在脚本中添加下面这些:
#!/bin/bash
#新增环境保障
export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
export LD_LIBRARY_PATH="/usr/local/lib:/usr/lib"
#在start_service函数中添加
start_service() {
#新增挂载检查
if ! mountpoint -q "(dirname "SOURCE_DIR")"; then
log_error "错误:源目录未挂载"
return 1
fi
#修改启动命令为完整环境
nohup env -i PATH="PATH" LD_LIBRARY_PATH="LD_LIBRARY_PATH" "$0" --foreground > "$WORK_DIR/nohup.log" 2>&1 &
}