yanchang
yanchang
发布于 2025-03-16 / 54 阅读
0
0

service_init.sh 启动问题(最后一次3.22更新)

尝试在proot环境安装docker,结果当然是失败了

然后还差点把整个环境给装崩了

自己写的service_init.sh 文件有问题

经过尝试mysql启动需要root密码,之前是mysql在启动状态所以成功执行,但是一旦服务器宕机重启mysql需要重启service_init.sh也需要输入密码,所以就卡在了mysql启动进程。

以及最重要的杀死进程,在proot环境下是无法进行的,所以需要进入termux环境下进行

解决方案1.service mysql start 或者 ./etc/init.d/mysql start

解决方案2.修改service_init.sh 文件(错误的)

#!/bin/bash
# 服务控制脚本 (支持 start/stop/restart 参数)
# 2025-03-16 更新

# 服务路径配置
MYSQL_CMD="/etc/init.d/mysql"
HALO_JAR="$HOME/app/halo.jar"
HALO_CONFIG="$HOME/.halo2/"
ALIST_BIN="/opt/alist/alist"
DDNS_GO="$HOME/ddns/ddns-go"
LOG_DIR="$HOME/service_logs"

start_services() {
    mkdir -p $LOG_DIR
    
    # 启动MySQL并自动输入密码
    echo "Starting MySQL..."
    echo "017100" | sudo -S service mysql start >> $LOG_DIR/mysql.log 2>&1
    echo "MySQL started."
    
    echo "Halo start..." 
    # 启动Halo并记录日志
    nohup java -Dfile.encoding=UTF-8 -jar $HALO_JAR \
        --spring.config.additional-location=optional:file:$HALO_CONFIG \
        >> $LOG_DIR/halo.log 2>&1 &
    echo "Halo ok"
    
    # 启动Alist
    nohup $ALIST_BIN server >> $LOG_DIR/alist.log 2>&1 &
    
    # 启动DDNS-Go
    nohup $DDNS_GO >> $LOG_DIR/ddns.log 2>&1 &
    
    echo "服务已启动 | 查看日志: ls $LOG_DIR"
}



# 停止所有服务。这个业务逻辑是有问题的,在proot环境中无法直接使用kill命令杀掉进程
stop_services() {
    
    # 停止Java服务(Halo)
    pkill -f "halo.jar" >> $LOG_DIR/halo_stop.log 2>&1
    
    # 停止Alist
    pkill -f "alist server" >> $LOG_DIR/alist_stop.log 2>&1
    
    # 停止DDNS-Go
    pkill -f "ddns-go" >> $LOG_DIR/ddns_stop.log 2>&1
    
    echo "Halo. DDNS. Alist服务已停止"
}

# 根据参数执行操作
case "$1" in
    start)
        start_services
        ;;
    stop)
        stop_services
        ;;
    restart)
        stop_services
        sleep 3
        start_services
        ;;
    *)
        echo "用法: $0 {start|stop|restart}"
        exit 1
esac

最终解决方案:

service_init.sh文件:

#!/bin/bash
# 服务控制脚本 (支持 start/stop/restart 参数)
# 2025-03-22 更新

# 服务路径配置
MYSQL_CMD="/etc/init.d/mysql"
HALO_JAR="$HOME/app/halo.jar"
HALO_CONFIG="$HOME/.halo2/"
ALIST_BIN="/opt/alist/alist"
DDNS_GO="$HOME/ddns/ddns-go"
LOG_DIR="$HOME/service_logs"
FILECODEBOX="/opt/filecodebox/FileCodeBox/venv/bin/python3"


start_services() {
    mkdir -p $LOG_DIR
    # 启动MySQL并自动输入密码
    echo "Starting MySQL..."
    echo "017100" | sudo -S service mysql start >> $LOG_DIR/mysql.log 2>&1
    echo "MySQL started."
    
    echo "Halo start..." 
    # 启动Halo并记录日志
    nohup java -Dfile.encoding=UTF-8 -jar $HALO_JAR \
        --spring.config.additional-location=optional:file:$HALO_CONFIG \
        >> $LOG_DIR/halo.log 2>&1 &
    echo "Halo started."
    

    # 启动Alist
    echo "Starting Alist..."
    nohup $ALIST_BIN server >> $LOG_DIR/alist.log 2>&1 &
    echo "Alist started."
    
    # 启动DDNS-Go
    echo "Starting DDNS..."
    nohup $DDNS_GO >> $LOG_DIR/ddns.log 2>&1 &
    echo "DDNS started."

    # 启动FileCodeBox
    echo "Starting FileCodeBox..."
    cd /opt/filecodebox/FileCodeBox
    nohup /opt/filecodebox/FileCodeBox/venv/bin/python3 /opt/filecodebox/FileCodeBox/main.py >> $LOG_DIR/filecodebox.log 2>&1 &
    cd -
    echo "FileCodeBox started."

    
    echo "服务已启动 | 查看日志: ls $LOG_DIR"
}



# 停止所有服务
stop_services() {
    echo "Halo. DDNS. Alist. FileCodeBox 关闭服务请前往8022执行 service_stop.sh"
}

# 根据参数执行操作
case "$1" in
    start)
        start_services
        ;;
    stop)
        stop_services
        ;;
    restart)
        stop_services
        sleep 3
        start_services
        ;;
    *)
        echo "用法: $0 {start|stop|restart}"
        exit 1
esac

service_stop.sh

#!/bin/bash
# 服务控制脚本 
# 2025-03-21 更新
    # 停止Java服务(Halo)
pkill -f "halo.jar" >> /data/data/com.termux/files/home/stop-log/halo_stop.log 2>&1
    
    # 停止Alist
pkill -f "alist server" >> /data/data/com.termux/files/home/stop-log/alist_stop.log 2>&1
    
    # 停止DDNS-Go
pkill -f "ddns-go" >> /data/data/com.termux/files/home/stop-log/ddns_stop.log 2>&1

    # 停止 MYSQL
pkill -f "mysqld" >> /data/data/com.termux/files/home/stop-log/mysql_stop.log 2>&1

pkill -f "/opt/filecodebox/FileCodeBox/main.py" >> /data/data/com.termux/files/home/stop-log/filecodebox_stop.log 2>&1
    
echo "Halo. DDNS. Alist. Mysql. FileCodeBox服务已停止"


评论