From aab5043fed24049f81b19982edc2b3e049ec6c4a Mon Sep 17 00:00:00 2001 From: Kakune55 Date: Tue, 21 May 2024 22:53:05 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E6=9B=B4=E6=96=B0=E5=90=AF=E5=8A=A8?= =?UTF-8?q?=E8=84=9A=E6=9C=AC=20=E9=98=B2=E6=AD=A2=E8=AF=AF=E6=9D=80?= =?UTF-8?q?=E5=85=B6=E4=BB=96=E8=BF=9B=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app_control.sh | 57 +++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 45 insertions(+), 12 deletions(-) diff --git a/app_control.sh b/app_control.sh index 0e1fc94..acf789a 100644 --- a/app_control.sh +++ b/app_control.sh @@ -2,31 +2,61 @@ VENV_DIR=".venv" PYTHON_APP="main.py" +LOG_FILE="output.log" +PID_FILE="app.pid" start_app() { + if [ ! -d "$VENV_DIR" ]; then + echo -e "\033[31m Virtual environment directory $VENV_DIR not found! \033[0m" + exit 1 + fi + + if [ ! -f "$PYTHON_APP" ]; then + echo -e "\033[31m Python application $PYTHON_APP not found! \033[0m" + exit 1 + fi + source "$VENV_DIR/bin/activate" - nohup python3 $PYTHON_APP > output.log 2>&1 & + nohup python3 "$PYTHON_APP" > "$LOG_FILE" 2>&1 & + echo $! > "$PID_FILE" echo -e "\033[32m Application started! \033[0m" } stop_app() { - pid=$(ps aux | grep $PYTHON_APP | grep -v grep | awk '{print $2}') - if [ -n "$pid" ]; then - kill $pid + if [ ! -f "$PID_FILE" ]; then + echo -e "\033[31m PID file not found! \033[0m" + exit 1 + fi + + pid=$(cat "$PID_FILE") + if [ -n "$pid" ] && kill -0 "$pid" 2>/dev/null; then + kill "$pid" + rm "$PID_FILE" echo -e "\033[32m Application ended! \033[0m" else - echo -e "\033[31m Application not runing! \033[0m" + echo -e "\033[31m Application not running or PID not found! \033[0m" fi } check_app_status() { - pid=$(ps aux | grep $PYTHON_APP | grep -v grep | awk '{print $2}') - if [ -n "$pid" ]; then - echo -e "PID:" $pid - echo -e "\033[32m Application runing! \033[0m" - else - echo -e "\033[31m Application not runing! \033[0m" + if [ ! -f "$PID_FILE" ]; then + echo -e "\033[31m Application not running! \033[0m" + exit 1 fi + + pid=$(cat "$PID_FILE") + if [ -n "$pid" ] && kill -0 "$pid" 2>/dev/null; then + echo -e "PID: $pid" + echo -e "\033[32m Application running! \033[0m" + else + echo -e "\033[31m Application not running! \033[0m" + fi +} + +restart_app() { + stop_app + start_app + echo -e "\033[32m Application restarted! \033[0m" } case "$1" in @@ -39,8 +69,11 @@ case "$1" in status) check_app_status ;; + restart) + restart_app + ;; *) - echo -e "\033[33m Usage: $0 {start|stop|status}\033[0m" + echo -e "\033[33m Usage: $0 {start|stop|status|restart} \033[0m" exit 1 ;; esac