| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 | 
							- #!/bin/bash
 
- # 显示帮助信息
 
- show_help() {
 
-     echo "用法: sudo ./install_autostart.sh [可执行文件路径] [可选:服务名称]"
 
-     echo "示例: sudo ./install_autostart.sh ./myapp myapp_service"  # 支持相对路径
 
-     echo "示例: sudo ./install_autostart.sh /home/user/app"         # 支持绝对路径
 
-     echo "说明:"
 
-     echo "  第一个参数: 可执行文件的路径(相对路径或绝对路径均可)"
 
-     echo "  第二个参数: 可选,自定义服务名称(默认使用文件名)"
 
- }
 
- # 检查参数是否正确
 
- if [ $# -lt 1 ]; thenc
 
-     echo "错误:请提供可执行文件的路径!"
 
-     show_help
 
-     exit 1
 
- fi
 
- # 解析参数并转换为绝对路径
 
- INPUT_PATH="$1"
 
- # 将传入的路径(无论相对/绝对)转换为绝对路径
 
- EXECUTABLE_PATH=$(realpath "$INPUT_PATH")
 
- # 检查转换后的路径是否存在
 
- if [ ! -f "$EXECUTABLE_PATH" ]; then
 
-     echo "错误:文件 $INPUT_PATH(转换后路径:$EXECUTABLE_PATH)不存在!"
 
-     exit 1
 
- fi
 
- # 检查文件是否可执行,不可执行则添加权限
 
- if [ ! -x "$EXECUTABLE_PATH" ]; then
 
-     echo "警告:文件 $EXECUTABLE_PATH 没有执行权限,正在添加..."
 
-     chmod +x "$EXECUTABLE_PATH" || {
 
-         echo "错误:无法为 $EXECUTABLE_PATH 添加执行权限!"
 
-         exit 1
 
-     }
 
- fi
 
- # 配置服务参数
 
- APP_NAME="${2:-$(basename "$EXECUTABLE_PATH")}"  # 服务名默认使用文件名
 
- APP_DESCRIPTION="Auto-start service for $APP_NAME"
 
- RUN_USER=$(whoami)
 
- WORKING_DIR=$(dirname "$EXECUTABLE_PATH")  # 工作目录为可执行文件所在目录
 
- SERVICE_FILE="/etc/systemd/system/$APP_NAME.service"
 
- # 创建 systemd 服务文件(使用转换后的绝对路径)
 
- echo "正在创建服务文件: $SERVICE_FILE"
 
- sudo tee "$SERVICE_FILE" > /dev/null << EOF
 
- [Unit]
 
- Description=$APP_DESCRIPTION
 
- After=network.target
 
- [Service]
 
- User=$RUN_USER
 
- WorkingDirectory=$WORKING_DIR
 
- ExecStart=$EXECUTABLE_PATH  # 使用绝对路径
 
- Restart=always
 
- RestartSec=5
 
- [Install]
 
- WantedBy=multi-user.target
 
- EOF
 
- # 设置服务文件权限
 
- sudo chmod 644 "$SERVICE_FILE"
 
- # 启用并启动服务
 
- echo "重新加载系统服务配置..."
 
- sudo systemctl daemon-reload
 
- echo "启用开机自启..."
 
- sudo systemctl enable "$APP_NAME.service"
 
- echo "启动服务..."
 
- sudo systemctl start "$APP_NAME.service"
 
- # 验证服务状态
 
- echo -e "\n服务状态验证:"
 
- sudo systemctl status "$APP_NAME.service" --no-pager
 
- echo -e "\n----------------------------------------"
 
- echo "操作完成!程序已配置为开机自启。"
 
- echo "服务名称: $APP_NAME"
 
- echo "可执行文件绝对路径: $EXECUTABLE_PATH"
 
- echo "管理命令:"
 
- echo "  启动: sudo systemctl start $APP_NAME.service"
 
- echo "  停止: sudo systemctl stop $APP_NAME.service"
 
- echo "  重启: sudo systemctl restart $APP_NAME.service"
 
- echo "  查看日志: sudo journalctl -u $APP_NAME.service -f"
 
- echo "  移除自启: sudo systemctl disable $APP_NAME.service"
 
 
  |