diff --git a/start_webman.sh b/start_webman.sh new file mode 100644 index 0000000..6f20601 --- /dev/null +++ b/start_webman.sh @@ -0,0 +1,65 @@ +#!/bin/bash +# 脚本名称:start_webman.sh +# 功能:批量启动 Webman 后台进程,拆分日志并避免阻塞 + +# ==================== 配置区域 ==================== +# 1. 定义要启动的 Webman 命令(与需求完全对应) +declare -a WEBMAN_COMMANDS=( + "applysmstemp" + "birthdaygiftsms" + "rabborderprint" + "rabbproductupdate" +) + +# 2. 日志存储目录(建议放在 Webman 项目根目录下) +LOG_DIR="./webman_process_logs" + +# 3. Webman 脚本路径(若脚本不在当前目录,需写绝对路径,如 /www/webman/webman) +WEBMAN_PATH="php webman" +# ==================== 配置区域结束 ==================== + + +# 第一步:创建日志目录(不存在则创建) +if [ ! -d "${LOG_DIR}" ]; then + mkdir -p "${LOG_DIR}" + # 赋予目录读写权限(避免日志写入失败) + chmod 755 "${LOG_DIR}" + echo -e "\033[32m✅ 日志目录不存在,已自动创建:${LOG_DIR}\033[0m" +else + echo -e "\033[32m✅ 日志目录已存在:${LOG_DIR}\033[0m" +fi + + +# 第二步:批量启动进程 +echo -e "\n\033[33m🚀 开始启动 Webman 进程...\033[0m" +echo "==============================================" + +for CMD in "${WEBMAN_COMMANDS[@]}"; do + # 拼接完整命令(nohup + 日志重定向,避免阻塞) + FULL_CMD="${WEBMAN_PATH} ${CMD}" + # 日志文件按进程名区分(方便后续排查) + LOG_FILE="${LOG_DIR}/${CMD}_$(date +%Y%m%d).log" + + echo -e "\n正在启动进程:\033[34m${FULL_CMD}\033[0m" + echo "日志文件路径:${LOG_FILE}" + + # 核心:执行 nohup 命令,重定向所有输出(避免占用终端) + nohup ${FULL_CMD} > "${LOG_FILE}" 2>&1 & + + # 检查启动状态(通过进程名模糊匹配) + PROCESS_PID=$(ps aux | grep "${FULL_CMD}" | grep -v grep | awk '{print $2}') + if [ -n "${PROCESS_PID}" ]; then + echo -e "\033[32m✅ 进程启动成功!PID:${PROCESS_PID}\033[0m" + else + echo -e "\033[31m❌ 进程启动失败!请查看日志:${LOG_FILE}\033[0m" + fi + echo "----------------------------------------------" +done + + +# 第三步:输出后续操作提示 +echo -e "\n\033[33m📌 操作提示:\033[0m" +echo "1. 查看所有 Webman 进程:ps aux | grep 'webman'" +echo "2. 查看指定进程日志:tail -f ${LOG_DIR}/[进程名]_日期.log(如 tail -f ${LOG_DIR}/applysmstemp_$(date +%Y%m%d).log)" +echo "3. 停止进程:kill [PID](强制停止:kill -9 [PID])" +echo -e "\n\033[32m🎉 所有进程启动命令已执行完毕!\033[0m"