| 
					
				 | 
			
			
				@@ -0,0 +1,87 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#!/bin/bash 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# 显示帮助信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+show_help() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    echo "用法: sudo ./install_autostart.sh [可执行文件绝对路径] [可选:服务名称]" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    echo "示例: sudo ./install_autostart.sh /home/user/apps/myapp myapp_service" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    echo "说明:" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    echo "  第一个参数: 必须是可执行文件的绝对路径(如 /opt/myprogram)" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    echo "  第二个参数: 可选,自定义服务名称(默认使用文件名)" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# 检查参数是否正确 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+if [ $# -lt 1 ]; then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    echo "错误:请提供可执行文件的绝对路径!" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    show_help 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    exit 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# 解析参数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+EXECUTABLE_PATH="$1" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+APP_NAME="${2:-$(basename "$EXECUTABLE_PATH")}"  # 服务名默认使用文件名 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# 检查可执行文件是否存在且可执行 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+if [ ! -f "$EXECUTABLE_PATH" ]; then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    echo "错误:文件 $EXECUTABLE_PATH 不存在!" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    exit 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+if [ ! -x "$EXECUTABLE_PATH" ]; then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    echo "警告:文件 $EXECUTABLE_PATH 没有执行权限,正在添加..." 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    chmod +x "$EXECUTABLE_PATH" || { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        echo "错误:无法为 $EXECUTABLE_PATH 添加执行权限!" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        exit 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# 配置服务参数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+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  # 直接运行可执行文件(无需Python) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+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" 
			 |