python開發(fā)的同學(xué)們應(yīng)該都知道怎么樣去啟動(dòng)一個(gè)python應(yīng)用磁玉,但是一旦我們把python應(yīng)用部署到linux服務(wù)器上該如何啟動(dòng)呢可帽?
方式①:就是使用進(jìn)程管理工具橘茉,比如supervisor除嘹。想了解的小伙伴可以學(xué)習(xí)[這篇文章]
(https://www.cnblogs.com/toutou/p/supervisor.html)怎憋。
方式②:就是自己寫一個(gè)簡單shell腳本又碌,將程序在后臺(tái)運(yùn)行九昧,即使關(guān)閉linux終端窗口也不會(huì)影響進(jìn)程的運(yùn)行。
兩者優(yōu)缺點(diǎn)
方式 | 優(yōu)點(diǎn) | 缺點(diǎn) |
---|---|---|
supervisor進(jìn)程管理 | ① 可以通過網(wǎng)頁執(zhí)行啟動(dòng)停止的操作② 單配置文件可控制多個(gè)程序③ 可控制進(jìn)程數(shù)量4④進(jìn)程資源控制能力比較強(qiáng) | ① 本身需要被監(jiān)控② 開機(jī)自啟依賴其他程序③ 不能跨主機(jī)④依賴于meld3毕匀、setuptools |
自寫shell腳本 | 啟停簡單铸鹰,無復(fù)雜配置 | 需要一定的linux知識(shí)基礎(chǔ),進(jìn)程資源控制能力比較弱皂岔,簡單的程序啟停工具蹋笼,存在一定的程序掛的風(fēng)險(xiǎn)。 |
#! /bin/bash
application='/home/wangping/'
a='hello'
b=`ps -aux| grep 'python3 /home/wangping/duty.py' | grep -v 'grep'| wc -l`
if [ ! $1 ];then
echo "請傳參數(shù) start|stop|restart"
else
if [ $1 == "start" ];then
if [ "$b" -gt "0" ];then
echo "<---------------------程序總是運(yùn)行--------------------->"
else
nohup python3 /home/wangping/duty.py >${application}info.log 2>log &
echo "<---------------------程序運(yùn)行成功--------------------->"
fi
fi
if [ $1 == 'stop' ];then
pid=`ps -aux | grep 'python3 /home/wangping/duty.py' | grep -v 'grep' | awk '{print $2}'`
if [ ! $pid ];then
echo "<--------程序不在運(yùn)行------->"
else
kill -s 9 $pid
echo "<--------程序已停止------->"
fi
fi
if [ $1 == 'restart' ];then
pid=`ps -aux | grep 'python3 /home/wangping/duty.py' | grep -v 'grep' | awk '{print $2}'`
if [ ! $pid ];then
nohup python3 /home/wangping/duty.py >${application}info.log 2>log &
echo "<---------------------程序未在運(yùn)行躁垛,程序已啟動(dòng)--------------------->"
else
kill -s 9 $pid
nohup python3 /home/wangping/duty.py >${application}info.log 2>log &
echo "<---------------------程序已重啟--------------------->"
fi
fi
fi