#!/usr/bin/env bash
# 第一行是說明使用的什么腳本語言,這里是 bash, 固定用法
# workdir 是一個路徑,即先切換到這個目錄下,然后啟動服務 (啟動命令: python app.py)。其實不切換應該也可以
workdir=/Users/llm/PycharmProjects/solar-clover-backend
# 啟動函數,切換路徑=》其實就是 python app.py 。 前面一段指明是哪個路徑下的python, 后面是 app.py 的路徑, & 表示以后台方式啟動(這里還不是很了解)
daemon_start() {
cd $workdir
/Users/llm/env_workspaces/flask/bin/python /Users/llm/PycharmProjects/solar-clover-backend/app.py &
echo "Server started."
}
# 停止函數,思路就是我們要找到這個進程號,然后把它 kill 掉
# 進程號尋找: 即 ps -ef|grep 命令, grep 用來過濾,awk 用來將過濾結果進行整理。 像這個命令,過濾出來有很多列,但我們只要進程號那一列,所以就是 {print $2}, 表示進程號那一列
# BEGIN{ ORS="," } 表示以逗號分隔每個進程號, 不寫默認換行符分隔。
# 輸出其實是一個字符串, 把它變為數組,因為我要取出第一個將進程殺死。 arr=... 這句話就是將 pid 變量里的內容轉換為數組,存入arr。
# 接下來就是取到 arr 第一個進程號, 使用 kill 命令殺死
daemon_stop() {
pid=`ps -ef | grep 'python /Users/llm/PycharmProjects/solar-clover-backend/app.py' | awk 'BEGIN{ ORS="," }{ print $2 }'`
arr=(`echo ${pid} | tr ',' ' '`)
echo ${arr[1]}
kill ${arr[1]}
sleep 3
echo "Server killed."
}
# $1 表示命令行交互輸入的第一個參數。 我們使用 ./dev.sh start 來運行腳本啟動服務(因為此腳本文件名稱為 dev.sh), start 位置上的變量就是傳入的第一個位置上的參數,也可以變為 stop, restart case "$1" in
start)
daemon_start
;;
stop)
daemon_stop
;;
restart)
daemon_stop
daemon_start
;;
*)
echo "Usage: ./dev.sh {start|stop|restart}"
exit 1
esac
exit 0