Linux下一鍵啟停Python服務腳本的超實用方法
在日常開發(fā)和部署 Python Web 服務(如 FastAPI、Flask、Django、Socket 服務等)時,經常需要頻繁啟動、停止、重啟進程。如果每次都手動 ps -ef | grep 再 kill -9,實在是太麻煩了!
今天分享一個我自己用了好幾年的「終極啟停腳本」,功能完整、輸出美觀、邏輯健壯,直接扔到服務器上就能用,強烈建議收藏!
最終效果演示
$ ./manager.sh start ##: 啟動成功(Start successfully) ~ $ ./manager.sh stop ##: 已停止(stopped) ... $ ./manager.sh restart ##: 已停止(stopped) ... ##: 啟動成功(Start successfully) ~
已經運行時重復啟動會有友好提示:
$ ./manager.sh start ##: 服務已經在運行中(The service is already running)
完整腳本(已親測可用)
將以下內容保存為 manager.sh(或者你喜歡的名字),放在項目根目錄,和 server.py 同級:
#!/bin/bash
# 要管理的 Python 服務文件名(可修改)
server_name="server.py"
# 彩色輸出定義
RED='\033[31m'
GREEN='\033[32m'
YELLOW='\033[33m'
CYAN='\033[36m'
RESET='\033[0m'
start() {
# 檢查是否已有進程在運行(取第一個匹配的 PID)
pid=$(ps -ef | grep -v grep | grep ${server_name} | awk 'NR==1{print $2}')
if [[ -z "$pid" ]]; then
echo -e "${YELLOW}正在啟動 ${server_name} ...${RESET}"
nohup python3 ${server_name} > server.log 2>&1 &
sleep 2 # 給進程一點啟動時間
# 再次檢查是否真的啟動成功
pid=$(ps -ef | grep -v grep | grep ${server_name} | awk 'NR==1{print $2}')
if [[ -n "$pid" ]]; then
echo -e "${CYAN} ##: 啟動成功(Start successfully) ~${RESET}"
else
echo -e "${RED} 啟動失敗(failed to activate),請查看 server.log${RESET}"
fi
else
echo -e "${GREEN} ##: 服務已經在運行中(The service is already running),PID: $pid${RESET}"
fi
}
stop() {
pid=$(ps -ef | grep -v grep | grep ${server_name} | awk 'NR==1{print $2}')
if [[ -n "$pid" ]]; then
kill -9 $pid
echo -e "${GREEN} ##: 已停止(stopped),PID $pid 已結束${RESET}"
else
echo -e "${YELLOW} ##: 未檢測到運行中的服務${RESET}"
fi
}
restart() {
echo -e "${YELLOW}正在重啟服務...${RESET}"
stop
sleep 1
start
}
# 使用說明
usage() {
echo "Usage: $0 {start|stop|restart}"
exit 1
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
*)
usage
;;
esac
exit 0
使用方法(三步搞定)
將腳本保存為 manager.sh
賦予執(zhí)行權限:
chmod +x manager.sh
使用:
./manager.sh start # 啟動 ./manager.sh stop # 停止 ./manager.sh restart # 重啟
腳本亮點總結
| 功能 | 說明 |
|---|---|
| 防止重復啟動 | 檢測到已有進程就提示,不再重復啟動 |
| 彩色日志輸出 | 看起來舒服,狀態(tài)一目了然 |
| 啟動失敗自動提示 | 啟動后會二次檢查進程是否存在 |
| 支持 restart | 先 stop 再 start,一鍵重啟 |
| 日志輸出到 server.log | 后臺運行不干擾終端,日志可隨時查看 |
| 僅 50 行左右 | 短小精悍,改起來也方便 |
可選增強(進階玩家)
- 想管理多個服務?把
server_name改成參數傳入即可 - 想開機自啟?配合
systemd或crontab -e加@reboot - 想支持端口占用檢測?加一句
lsof -i:8000
寫在最后
這個腳本我從 2021 年用到現在,幾乎所有個人項目和小公司服務器都在用,穩(wěn)定得一批!
強烈建議每個 Python 后端開發(fā)者都準備一個,省時省力又裝逼(不是)
到此這篇關于Linux下一鍵啟停Python服務腳本的超實用方法的文章就介紹到這了,更多相關Linux啟停Python腳本內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
詳解如何在 CentOS 7 上安裝和安全配置 MariaDB 10
這篇文章主要介紹了詳解如何在 CentOS 7 上安裝和安全配置 MariaDB 10,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-03-03

