Linux下一鍵啟停Python服務(wù)腳本的超實(shí)用方法
在日常開發(fā)和部署 Python Web 服務(wù)(如 FastAPI、Flask、Django、Socket 服務(wù)等)時(shí),經(jīng)常需要頻繁啟動(dòng)、停止、重啟進(jìn)程。如果每次都手動(dòng) ps -ef | grep 再 kill -9,實(shí)在是太麻煩了!
今天分享一個(gè)我自己用了好幾年的「終極啟停腳本」,功能完整、輸出美觀、邏輯健壯,直接扔到服務(wù)器上就能用,強(qiáng)烈建議收藏!
最終效果演示
$ ./manager.sh start ##: 啟動(dòng)成功(Start successfully) ~ $ ./manager.sh stop ##: 已停止(stopped) ... $ ./manager.sh restart ##: 已停止(stopped) ... ##: 啟動(dòng)成功(Start successfully) ~
已經(jīng)運(yùn)行時(shí)重復(fù)啟動(dòng)會(huì)有友好提示:
$ ./manager.sh start ##: 服務(wù)已經(jīng)在運(yùn)行中(The service is already running)
完整腳本(已親測可用)
將以下內(nèi)容保存為 manager.sh(或者你喜歡的名字),放在項(xiàng)目根目錄,和 server.py 同級:
#!/bin/bash
# 要管理的 Python 服務(wù)文件名(可修改)
server_name="server.py"
# 彩色輸出定義
RED='\033[31m'
GREEN='\033[32m'
YELLOW='\033[33m'
CYAN='\033[36m'
RESET='\033[0m'
start() {
# 檢查是否已有進(jìn)程在運(yùn)行(取第一個(gè)匹配的 PID)
pid=$(ps -ef | grep -v grep | grep ${server_name} | awk 'NR==1{print $2}')
if [[ -z "$pid" ]]; then
echo -e "${YELLOW}正在啟動(dòng) ${server_name} ...${RESET}"
nohup python3 ${server_name} > server.log 2>&1 &
sleep 2 # 給進(jìn)程一點(diǎn)啟動(dòng)時(shí)間
# 再次檢查是否真的啟動(dòng)成功
pid=$(ps -ef | grep -v grep | grep ${server_name} | awk 'NR==1{print $2}')
if [[ -n "$pid" ]]; then
echo -e "${CYAN} ##: 啟動(dòng)成功(Start successfully) ~${RESET}"
else
echo -e "${RED} 啟動(dòng)失敗(failed to activate),請查看 server.log${RESET}"
fi
else
echo -e "${GREEN} ##: 服務(wù)已經(jīng)在運(yùn)行中(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 已結(jié)束${RESET}"
else
echo -e "${YELLOW} ##: 未檢測到運(yùn)行中的服務(wù)${RESET}"
fi
}
restart() {
echo -e "${YELLOW}正在重啟服務(wù)...${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í)行權(quán)限:
chmod +x manager.sh
使用:
./manager.sh start # 啟動(dòng) ./manager.sh stop # 停止 ./manager.sh restart # 重啟
腳本亮點(diǎn)總結(jié)
| 功能 | 說明 |
|---|---|
| 防止重復(fù)啟動(dòng) | 檢測到已有進(jìn)程就提示,不再重復(fù)啟動(dòng) |
| 彩色日志輸出 | 看起來舒服,狀態(tài)一目了然 |
| 啟動(dòng)失敗自動(dòng)提示 | 啟動(dòng)后會(huì)二次檢查進(jìn)程是否存在 |
| 支持 restart | 先 stop 再 start,一鍵重啟 |
| 日志輸出到 server.log | 后臺(tái)運(yùn)行不干擾終端,日志可隨時(shí)查看 |
| 僅 50 行左右 | 短小精悍,改起來也方便 |
可選增強(qiáng)(進(jìn)階玩家)
- 想管理多個(gè)服務(wù)?把
server_name改成參數(shù)傳入即可 - 想開機(jī)自啟?配合
systemd或crontab -e加@reboot - 想支持端口占用檢測?加一句
lsof -i:8000
寫在最后
這個(gè)腳本我從 2021 年用到現(xiàn)在,幾乎所有個(gè)人項(xiàng)目和小公司服務(wù)器都在用,穩(wěn)定得一批!
強(qiáng)烈建議每個(gè) Python 后端開發(fā)者都準(zhǔn)備一個(gè),省時(shí)省力又裝逼(不是)
到此這篇關(guān)于Linux下一鍵啟停Python服務(wù)腳本的超實(shí)用方法的文章就介紹到這了,更多相關(guān)Linux啟停Python腳本內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Linux服務(wù)器出現(xiàn)崩潰或異常的故障排查和急救指南
當(dāng) Linux 服務(wù)器出現(xiàn)崩潰或異常時(shí),及時(shí)有效的故障排查是至關(guān)重要的,以下是一個(gè)綜合性的急救指南,幫助你在遇到問題時(shí)進(jìn)行快速的故障排查和修復(fù),需要的朋友可以參考下2025-11-11
Linux文件共享與存儲(chǔ):NFS、Samba與CIFS的使用方法
這篇文章主要介紹了在Linux環(huán)境中配置和使用NFS、Samba和CIFS文件共享服務(wù)的完整技能,從基礎(chǔ)的共享配置到高級的性能優(yōu)化和安全設(shè)置的相關(guān)資料,需要的朋友可以參考下2025-10-10

