团队中有一大部分的监控任务都是自己来做的,这其中包括了很多脚本,主要是Python脚本。但是有时由于不可预料的原因,Python会异常终止,因此编写一个自动检测Python脚本是否异常终止的脚本,当异常终止时,重新启动即可。

#!/bin/sh

# 一定要保证路径下Python文件唯一

base_path='/home/report724'

pythons_3=("ElkMaster.py" "CopyAndCrawlerDayData.py" "RabbitMQStatus.py")

pythons_2=("CoreMonitor.py" "SparkMonitor.py" "AthenaErrorLog.py" "ServiceIpCount.py" "AthenaForOperations.py")

function start_python_3(){

# $1 为程序的名字,即 *.py

program=$1

echo $program

pro_path=$(find $base_path -name $program)

echo $pro_path

cd ${pro_path%/*}

nohup ppython3 $pro_path > /dev/null &

curl "http://172.30.111.111:8088/report/monitor/sendSmsCode?phoneNumber=15788888888&captcha=999999&message=${program}已重启"

}

function start_python_2(){

# $1 为程序的名字,即 *.py

program=$1

echo $program

pro_path=$(find $base_path -name $program)

echo $pro_path

cd ${pro_path%/*}

nohup python $pro_path > /dev/null &

curl "http://172.30.111.111:8088/report/monitor/sendSmsCode?phoneNumber=15788888888&captcha=999999&message=${program}已重启"

}

# index=0

echo `date "+%Y-%m-%d %H:%M:%S"`

for python in ${pythons_3[@]}; do

#statements

ps aux | grep $python | grep -v grep

if [[ $? -ne 0 ]]; then

#statements

echo "start process....."

start_python_3 $python

else

echo "running....."

fi

# echo $index

# index=`expr $index + 1`

done

for python in ${pythons_2[@]}; do

#statements

ps aux | grep $python | grep -v grep

if [[ $? -ne 0 ]]; then

#statements

echo "start process....."

start_python_2 $python

else

echo "running....."

fi

# echo $index

# index=`expr $index + 1`

done

因为有很多脚本,有些是用Python2运行的,有些是用Python3运行的,因此对Python2和Python3(我设置的本机Pythone3命令为ppython3)分别写了函数。 函数中还用一个curl访问了一个短信通知接口,当程序重启后会进行短信通知。 把此脚本添加到 crontab 任务中,每5分钟运行检测一次即可。

待完善对程序是否启动成功没有加以判断,默认是启动成功的。

必须保证在 base_path 路径下要监控的Python脚本文件是唯一的,否则无法正确找出其所在路径。

注意

此脚本需要用命令source 脚本.sh 来执行,否则 cd ${pro_path%/*} 不会执行成功。

python 苹果手机自动重启_Linux下编写一个Python自动重启脚本相关推荐

  1. linux下python安装opencv库_Linux下怎么配置python和opencv

    匿名用户 1级 2017-06-20 回答 以下说明在Linux下Python和OpenCV结合安装的过程,Python要使用OpenCV模块,则必须导入OpenCV提供的包,所以要提供Python支 ...

  2. python安装gdal包_linux下gdal的python包的安装

    由于python包是从C++包编译出来的,所以需要先下载源码进行编译安装. 1. gdal下载 http://download.osgeo.org/gdal/CURRENT/ sudo ./confi ...

  3. 安装python环境与运行_linux下怎么安装python的运行环境

    展开全部 1.2113linux下安装python3 a. 准备编译环境(环境如果不对的5261话,可能遇到各种问题,比如wget无法下4102载1653https链接的文件)1 2 yum grou ...

  4. python统计大小写字母个数_编写一个Python函数,它接受一个字符串并计算大写字母和小写字母的数量...

    问题why this one doesn't work? 除了语法错误和运行时错误之外,您的代码逻辑还有很长的路要走.你实际上没有按问题所问的去做.您似乎正在尝试计算单个字符中的大写字符数.那是不正确 ...

  5. linux看python包的路径_linux下 彻底修改python的包/模块导入路径

    python模式下,有时候需要导入  import某些模块或者包.明明这个模块/包是存在的,却提示导入错误,比如,"ImportError: No module named lxml&quo ...

  6. linux编写php,Linux 下编写一个 PHP 扩展

    假设需求 开发一个叫做 helloWord 的扩展. 扩展里有一个函数,helloWord(). echo helloWord('Tom'); //返回:Hello World: Tom 本地环境 P ...

  7. python源码脚本实例_python编写一个会算账的脚本的示例代码

    python算账脚本 1.假如小明卡里有10000元去商场买东西发现钱不够又向父母借了5000账单如下 2.以下脚本就能实现上面的运算 from time import strftime import ...

  8. python编写脚本教程_python编写一个会算账的脚本的示例代码

    python算账脚本 1.假如小明卡里有10000元去商场买东西发现钱不够又向父母借了5000账单如下 2.以下脚本就能实现上面的运算 from time import strftime import ...

  9. 编写一个Python程序,计算任意圆锥体的体积和表面积。

    编写一个Python程序,计算任意圆锥体的体积和表面积. import math r=float(input("半径是")) h=float(input("高是" ...

最新文章

  1. 计算机学win7画图,Win7系统自带画图工具如何打开?win7打开画图工具教程
  2. 20160115广州MVP线下聚会
  3. 2018最受欢迎机构公众号:亲爱的读者,请你为我们投票
  4. 007_停止动画或效果
  5. 如何建设移动 DevOps?
  6. 七大你可能不知道的 Chrome 使用技巧
  7. cacheAsBitmap = ‘true' 可以降低cpu,提高效率?
  8. vs2015提示中文
  9. 【每日算法Day 76】经典面试题:中序遍历的下一个元素,5大解法汇总!
  10. Thrift Server与Client
  11. Atitit  文件上传  架构设计 实现机制 解决方案  实践java php c#.net js javascript  c++ python
  12. 字体主题宝库:25款很好看的液晶数字字体下载
  13. 一图搞清楚SRE的工作内容
  14. 2022-2027年中国股权众筹行业市场调研及未来发展趋势预测报告
  15. 简历准备(一)—— TPLink
  16. storm java 例子_Storm 运行例子
  17. 释疑:SI-RNTI,C-RNTI,P-RNTI,RA-RNTI,SPS-RNTI
  18. 01_邂逅vue3开发
  19. 夜产房:孕妈呼吸困难,三次吸氧,检查后发现,左肺几乎不见?
  20. Flash的破解与加密

热门文章

  1. 沟通技巧-《演讲的力量》书中的精髓:战略上藐视演讲,战术上重视它。
  2. C语言与木马恶意代码分析和360安全防护揭秘
  3. 程序开发中的(小数)精度缺失问题--学习记录
  4. Windows 7引导Ubuntu 13.10 双系统安装
  5. mybatis练习-获取拥有“普通用户”角色的所有用户信息,要求查询结果除了包含用户自身信息,还包括角色名和角色创建时间。
  6. Rumor CodeForces - 893C(并查集基本操作:维护连通块最值)
  7. oa系统对服务器的要求1000台,OA办公系统协同办公平台运行服务器最低配置要求...
  8. Vue中的 props 属性
  9. vue2知识点:组件的props属性、非props属性、props属性校验
  10. 五个程序员必要的在线绘图工具