shell腳本-監控python進程是否在運行,沒有則重啟jingdong_prices_run.py 並發送郵件告知重啟時間,否則不重啟不發送郵件
定時檢測京東商品狀態
*/5 * * * * sh /data/jingdong-app-spider-py/shell/check-jingdong-goods-run.sh >/store/logs/jingdong-app-spider-py/startpy.log 2>&1
shell監控python進程
check-jingdong-goods-run.sh
#!/bin/bash
echo "開始檢查京東商品jingdong_prices_run程序是否運行..."
cd /data/jingdong-app-spider-py/test
processID=$(ps -ef | grep jingdong_prices_run.py | grep -v "grep" | awk "{print $2}")
echo $processID
# 判斷$processID為空,此處意思為如果$processID為空,那么重啟
if [ -z "$processID" ]
then
# 啟動京東商品jingdong_prices_run程序
echo "京東商品jingdong_prices_run程序未運行, 重新啟動中..."
#nohup python3 jingdong_prices_run.py >/dev/null &
nohup python3 jingdong_prices_run.py >/store/logs/jingdong-app-spider-py/nohup.out &
echo "jingdong_prices_run京東商品重啟成功..."
# 發送郵件 獲取當前ip
ipAdress=$(curl httpbin.org/ip)
echo $ipAdress
nohup python3 /data/jingdong-app-spider-py/common/send_email.py "jingdong_prices_run京東商品程序重啟成功..." "${ipAdress}"
else
echo "jingdong_prices_run京東商品程序正在運行中..."
#nohup python3 jingdong_prices_run.py >/store/logs/jingdong-app-spider-py/jingdong_data/date +%F/startpy.log &
#echo "jingdong_prices_run京東商品程序重啟成功..."
# 發送郵件
#ipAdress=$(curl httpbin.org/ip)
#echo $ipAdress
#python3 /opt/gh2/app/jingdong-app-spider-py/common/send_email.py "jingdong_prices_run京東商品同步程序重啟成功..." "${ipAdress}"
fi
# ps -ef 展示進程
# | grep your_keywords 按關鍵字篩選
# | grep -v “grep” 屏蔽grep程序本身的進程
# | awk ‘{print $2}’ 只打印第二列
# process_id=${語句} 將語句執行的返回值賦值給process_id,注意等號前后不能有空
# [ -z "$process_id”] 判斷$process_id為空
# [[ -z "$process_id”]] 判斷$process_id不為空 , 注意這里前后有兩個中括號,Shell的這個語法有點奇怪
# kill -9 $process_id 殺掉變量$process_id指定的進程
shell啟動python進程
不需要手動 nohup python3 jing_app_run.py >/data/nohup.out/ 2>&1 & 啟動,直接運行shell腳本
sh /data/scripts/spider-crawler.sh
#!/bin/bash
PROJECT=`basename $0 | awk -F '_' '{print $1}'`
APP_PATH="/data/app/$PROJECT"
APP_RUN_NAME=`ls $APP_PATH | grep py`
APP_PID=$(ps -ef | grep jing_app_run.py | grep -v grep | awk '{print $2}')
if [ -n "${APP_PID}" ]
then
kill -9 ${APP_PID}
sleep 5
fi
# 啟動
cd ${APP_PATH}
nohup python3 ${APP_PATH}/${APP_RUN_NAME} > /data/logs/$PROJECT.out 2>&1 &