Linux下Java Python啟動(dòng)管理腳本方便程序管理
引言
分享一個(gè)從網(wǎng)絡(luò)上搜集到的Java/Python管理腳本,方便在Linux操作系統(tǒng)下管理你的Java或Python應(yīng)用程序,只需要對(duì)其進(jìn)行稍加修改即可投入生產(chǎn)使用。
建議將腳本修改為startup.sh,并賦予可執(zhí)行權(quán)限:
chmod +x startup.sh
下面是完成的腳本:
1.Java啟動(dòng)腳本
在腳本中修改JAVA_HOME變量的地址及SERVICE_NAME中jar包的名稱,將啟動(dòng)腳本與jar包置于同一目錄下即可。
#!/bin/bash #網(wǎng)址:aaa.al export JAVA_HOME=/usr/local/jdk1.8.0_271 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:${JAVA_HOME}/lib ## service name SERVICE_ROOT=$(dirname $(dirname "$PWD")) SERVICE_DIR=$(cd $(dirname $0); pwd) SERVICE_NAME=test.jar JAR_NAME=$SERVICE_NAME\.jar PID=$SERVICE_NAME\.pid cd $SERVICE_DIR case "$1" in start) nohup java -Xms256m -Xmx512m -XX:PermSize=256m -XX:MaxPermSize=1024m -jar $JAR_NAME > $SERVICE_NAME.log 2>&1 & echo $! > $SERVICE_DIR/$PID echo "=== start $SERVICE_NAME" ;; stop) kill `cat $SERVICE_DIR/$PID` rm -rf $SERVICE_DIR/$PID echo "=== stop $SERVICE_NAME" sleep 5 P_ID=`ps -ef | grep "$SERVICE_NAME" | grep -v grep | grep -v "$0" | awk '{print $2}'` if [ "$P_ID" == "" ]; then echo "=== $SERVICE_NAME process not exists or stop success" else echo "=== $SERVICE_NAME process pid is:$P_ID" echo "=== begin kill $SERVICE_NAME process, pid is:$P_ID" kill -9 $P_ID fi ;; restart) $0 stop sleep 2 $0 start echo "=== restart $SERVICE_NAME" ;; *) echo "-------------------------------------" echo "" echo "項(xiàng)目地址: ${SERVICE_DIR}/${JAR_NAME}" echo "" echo "你可以使用如下參數(shù)進(jìn)行操作" echo "start -啟動(dòng)當(dāng)前項(xiàng)目" echo "stop -停止當(dāng)前項(xiàng)目" echo "restart -重啟當(dāng)前項(xiàng)目" echo "" echo "-------------------------------------" ;; esac exit 0
啟動(dòng)命令:
./startup.sh start
停止命令:
./startup.sh stop
重啟命令:
./startup.sh restart
2.python啟動(dòng)腳本
同樣的方式,定義項(xiàng)目使用的虛擬環(huán)境地址venvPath,在啟動(dòng)項(xiàng)目時(shí)會(huì)激活虛擬環(huán)境來(lái)運(yùn)行python腳本。如果您沒(méi)有使用虛擬環(huán)境,可根據(jù)需求注釋虛擬環(huán)境相關(guān)腳本。
#!/bin/bash #網(wǎng)址:aaa.al # 服務(wù)配置 # python 項(xiàng)目使用的虛擬環(huán)境路徑 venvPath="/home/ops/add_missing_room_detail/py36" # python 項(xiàng)目的路徑 projectPath="/home/ops/add_missing_room_detail/HotelGo2DelonixPmx" # python 項(xiàng)目啟動(dòng)命令 CMD="python fix_missing_rates.py" # 啟動(dòng)進(jìn)程函數(shù) start_process() { # 判斷進(jìn)程是否已經(jīng)在運(yùn)行,如果已經(jīng)在運(yùn)行則不需要重復(fù)啟動(dòng) start_pid=$(ps aux | grep "$CMD" | grep -v grep | awk '{print $2}') if [ -n "$start_pid" ]; then echo "The process is already running with PID:" $start_pid return 1 fi # 激活python虛擬環(huán)境 echo "activate python venv3 $venvPath" source $venvPath"/bin/activate" cd $projectPath # 后臺(tái)運(yùn)行執(zhí)行命令,將日志輸出到文件runoob.log nohup $CMD >runoob.log 2>&1 & start_pid=$! # 判斷進(jìn)程是否成功啟動(dòng) if [ -z "$start_pid" ]; then echo "Fail to start process" return 1 else echo "The process has been started with PID:" $start_pid return 0 fi } # 停止進(jìn)程函數(shù) stop_process() { # 根據(jù)進(jìn)程名過(guò)濾出進(jìn)程id,并結(jié)束進(jìn)程 start_pid=$(ps aux | grep "$CMD" | grep -v grep | awk '{print $2}') if [ -z "$start_pid" ]; then echo "No process to stop." return 1 else kill -9 $start_pid echo "The process has been stopped with PID:" $start_pid return 0 fi } # 根據(jù)傳入?yún)?shù)執(zhí)行對(duì)應(yīng)的操作 case $1 in start) start_process ;; stop) stop_process ;; *) echo "Usage: $0 {start|stop}" exit 1 ;; esac
啟動(dòng)項(xiàng)目:
./startup.sh start
停止項(xiàng)目:
./startup.sh stop
以上就是Linux下Java/Python啟動(dòng)管理腳本方便程序管理的詳細(xì)內(nèi)容,更多關(guān)于Linux啟動(dòng)JavaPython管理腳本的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
搜索一文入門ElasticSearch(節(jié)點(diǎn) 分片 CRUD 倒排索引 分詞)
這篇文章主要為大家介紹了搜索一文入門ElasticSearch(節(jié)點(diǎn) 分片 CRUD 倒排索引 分詞)的基礎(chǔ)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03Eclipse新建項(xiàng)目不可選擇Java Project問(wèn)題解決方案
這篇文章主要介紹了Eclipse新建項(xiàng)目不可選擇Java Project問(wèn)題解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07Java Calendar類的使用總結(jié)實(shí)例
這篇文章主要介紹了Java Calendar類的使用總結(jié)實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03java 通過(guò)cmd 調(diào)用命令啟動(dòng)tomcat的操作
這篇文章主要介紹了java 通過(guò)cmd 調(diào)用命令啟動(dòng)tomcat的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-11-11Java創(chuàng)建數(shù)組的幾種方式總結(jié)
下面小編就為大家?guī)?lái)一篇Java創(chuàng)建數(shù)組的幾種方式總結(jié)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-10-10java StringBuilder類的詳解及簡(jiǎn)單實(shí)例
這篇文章主要介紹了java StringBuilder類的詳解及簡(jiǎn)單實(shí)例的相關(guān)資料,實(shí)現(xiàn)了StringBuilder類的追加、插入、替換、刪除等操作,需要的朋友可以參考下2017-08-08java如何將一個(gè)float型數(shù)的整數(shù)部分和小數(shù)分別輸出顯示
這篇文章主要介紹了java如何將一個(gè)float型數(shù)的整數(shù)部分和小數(shù)分別輸出顯示,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07