#!/bin/bash mkdir -p /usr/local/bin/ curl https://git.uauu.net/coolsd/khd/raw/branch/main/newkhd05 -o /usr/local/bin/khdn #!/bin/bash # 检查是否以 root 权限运行 if [ "$EUID" -ne 0 ]; then echo "请以 root 权限运行此脚本" exit 1 fi # 设置变量 SERVICE_NAME="khdn" EXECUTABLE_PATH="/usr/local/bin/khdn" chmod +x "$EXECUTABLE_PATH" cat > "/etc/init.d/${SERVICE_NAME}" << EOL #!/bin/sh ### BEGIN INIT INFO # Provides: khdn # Required-Start: $network $remote_fs $syslog # Required-Stop: $network $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: KHDN Client Service ### END INIT INFO # 设置变量 DAEMON="/usr/local/bin/khdn" DAEMON_NAME="khdn" PIDFILE="/var/run/${DAEMON_NAME}.pid" LOGFILE="/var/log/${DAEMON_NAME}.log" DEBUGLOG="/var/log/${DAEMON_NAME}_debug.log" # 获取 name 环境变量 get_name_var() { if [ -n "$name" ]; then echo "$name" elif name=$(cat /proc/1/environ | tr '\0' '\n' | grep ^name= | cut -d= -f2); then echo "$name" else hostname fi } # 确保只有一个实例在运行 ensure_single_instance() { if [ -f "$PIDFILE" ]; then pid=$(cat "$PIDFILE") if [ -d "/proc/$pid" ]; then echo "$DAEMON_NAME is already running." return 1 else rm -f "$PIDFILE" fi fi return 0 } # 启动服务 do_start() { ensure_single_instance || return 1 name=$(get_name_var) echo "Starting $DAEMON_NAME with name=$name" >> "$DEBUGLOG" start-stop-daemon --start --background --make-pidfile --pidfile "$PIDFILE" \ --exec /usr/bin/env -- name="$name" "$DAEMON" >> "$LOGFILE" 2>&1 echo "$DAEMON_NAME started with PID $(cat $PIDFILE)" >> "$DEBUGLOG" } # 停止服务 do_stop() { echo "Stopping $DAEMON_NAME" >> "$DEBUGLOG" start-stop-daemon --stop --pidfile "$PIDFILE" --retry 10 rm -f "$PIDFILE" echo "$DAEMON_NAME stopped" >> "$DEBUGLOG" } # 获取服务状态 get_status() { if [ -f "$PIDFILE" ]; then pid=$(cat "$PIDFILE") if [ -d "/proc/$pid" ]; then echo "$DAEMON_NAME is running (PID: $pid)" else echo "$DAEMON_NAME is not running (stale PID file)" fi else echo "$DAEMON_NAME is not running" fi } case "$1" in start) do_start ;; stop) do_stop ;; restart) do_stop do_start ;; status) get_status ;; *) echo "Usage: /etc/init.d/$DAEMON_NAME {start|stop|restart|status}" exit 1 ;; esac exit 0 EOL # 设置执行权限 chmod +x "/etc/init.d/${SERVICE_NAME}" # 添加服务到启动项 update-rc.d $SERVICE_NAME defaults # 启动服务 service $SERVICE_NAME start echo "KHDN Client 服务已安装并启动 (使用 SysV init)" fi echo "安装完成"