#!/bin/bash

#author:haiy

#email:haiyangfu512@gmail.com

# Fri Apr 25 13:04:48 CST 2014#GNU licence.

#monitor and keep the program running

DEBUG=false

function restart_program()

{#向screen发送要执行的命令

if [ $# -lt 3 ];then

echo $# parameters get!

echo usage: bash restart_program session_name window_index_number command

exit

fi

session=$1

window=$2

command=$3

#echo "current session is $session.$window_num"

screen -x -S $session -p $window -X stuff "$command"

}

function single_watch()

{#检测某个程序是否在运行

if [ $# -lt 2 ];then

echo $# parameters get!

echo usage: bash single_watch program_name running_instance_number

exit

fi

program_name=$1

expected_number=$2

real_number=$( ps aux | grep "$program_name"$ | grep -v grep | grep -v $0 | grep -v SCREEN | grep -v vim | wc -l )

if [ ! $real_number = $expected_number ];then

echo false

else

echo true

fi

}

function keep_running()

{#从文件读入要检测运行的程序的列表以及其所在的screen 的session name和window number。

#$1 is the service_list file with service name ,

#screen session name and window index

#$2 is the sleep duration

service_list=$1

sleep_time=$2

while true;

do

if [ $# -lt 2 ];then

echo $# parameters get!

echo usage: bash check_running_service list_file sleep_time

exit

fi

#read the checked service list from the file

while read line;

do

IFS=';' read -a content <<< "$line"

session=$(echo "${content[0]}")

window=$(echo "${content[1]}")

program=$(echo "${content[2]}")

if $DEBUG; then

echo session,$session,

echo window,$window,

echo program,$program

fi

stat=$(single_watch "$program" 1)

if [ $stat == "false" ];then

echo "`date` Gonna restart $program..."

restart_program $session $window "$program

"

#echo "$program ." > mail_content

#python gmail_sender.py#发送邮件。。。。

else

echo "`date` ==> $line ==>Running normally."

fi

done < $service_list

if $DEBUG;then

exit

fi

echo "I'm gonna sleep a while,$2.."

sleep $sleep_time

done

}

if $DEBUG;then

#Here the command should be quoted with double quotes

restart_program 16902.watch_dog 3 "ls

"

#single_watch

keep_running $1 $2

#session_name=16902.watch_dog

#window_num=3

#screen -x -S $session -p $window_num -X stuff $command

fi

if [ $# -lt 2 ];then

echo usage: bash keep_running list_file sleep_time

exit

fi

keep_running $1 $2

=======分隔=====================

list_file example:

16902.watch_dog;2;bash test_loop.sh

http://www.dengb.com/xtzh/766249.htmlwww.dengb.comtruehttp://www.dengb.com/xtzh/766249.htmlTechArticle#!/bin/bash#author:haiy#email:haiyangfu512@gmail.com# Fri Apr 25 13:04:48 CST 2014 #GNU licence.#monitor and keep the program runningDEBUG=falsefunction restart_program(){#向scree...

linux 检测screen,linux screen编程,自动监控并向screen发送命令相关推荐

  1. 主动申请linux内存 脚本,Shell 脚本来自动监控 Linux 系统的内存

    # vim /scripts/swap-warning.sh #!/bin/bash #提取本服务器的IP地址信息 IP=`ifconfig eth0 | grep "inet addr&q ...

  2. Linux中的Shell用SSH自动登录远程服务器后执行命令并自动退出

    目录 [隐藏] 1 SSH命令格式 2 主要参数说明 3 ssh控制远程主机,远程执行命令步骤 4 准备工作 5 基于公私钥认证远程登录可能存在的不足 6 ssh 执行远程命令格式 6.1 打开远程s ...

  3. 网站首页被篡改? 看我使用PhantomJS利器实现网站自动监控修改并截图发送企业微信预警

    欢迎关注「WeiyiGeek」 设为「星标⭐」每天带你 基础入门 到 进阶实践 再到 放弃学习! 涉及 网络安全运维.应用开发.物联网IOT.学习路径 .个人感悟 等知识 "  花开堪折直须 ...

  4. linux inotifywait脚本,使用inotify/fswatch构建自动监控脚本

    自动告警脚本 最近项目上有这样一个需求:系统中有一个后台服务会不断的生成监控日志,根据系统的运行情况,它每天会在目录/var/alarms下生成一个文件,文件名带有时间戳,其中内容格式如下: $cat ...

  5. Linux命令如何进入screen,linux screen命令基础

    screen命令可以在同一个账号同时开启多个窗口,这样可以在某一个窗口运行程序的同时,开启另一个窗口操作其他命令,尤其是当你连接了Linux服务器的时候,使用screen可以在后台跑程序,这样即使你的 ...

  6. linux 终端 screem,Linux screen实操指南

    今天为大家从实践角度介绍下如何在linux终端使用screen,相信我,用好screen,可以让你的工作事半功倍. 01screen是什么 Screen是一个全屏窗口管理器,它可以在多个进程之间多路复 ...

  7. linux 显示用法,linux screen 用法总结

    你 是不是经常需要 SSH 或者 telent 远程登录到 Linux 服务器?你是不是经常为一些长时间运行的任务而头疼,比如系统备份.ftp 传输等等.通常情况下我们都是为每一个这样的任务开一个远程 ...

  8. linux终端录像工具,Linux_Ubuntu安装屏幕录像工具Simple Screen Recorder的方法,  Simple Screen Recorder是一款简 - phpStudy...

    Ubuntu安装屏幕录像工具Simple Screen Recorder的方法 Simple Screen Recorder是一款简单的屏幕录像工具,能够在屏幕上录制视频.教程,可用于手机和电脑系统, ...

  9. Linux环境下的网络编程

    本文介绍了在Linux环境下的socket编程常用函数用法及socket编程的一般规则和客户/服务器模型的编程应注意的事项和常遇问题的解决方法,并举了具体代  码实例.要理解本文所谈的技术问题需要读者 ...

  10. Linux的系统调用、网络连接状态、磁盘I/O;可疑行为监控/日志收集、SHELL命令执行流程

    http://man7.org/linux/man-pages/man7/capabilities.7.html http://www.cnblogs.com/LittleHann/p/3850653 ...

最新文章

  1. 《深入java虚拟机》读书笔记类加载
  2. Metasploit运行环境内存不要低于2GB
  3. vue修改打包后静态资源路径
  4. Jquery checkbox全选简单用法
  5. Oracle数据库之创建和管理表
  6. 【01】Clean Code
  7. html编写气泡对话框,HTML+CSS入门 纯CSS手写圆角气泡对话框
  8. pm模型matlab算法,18基于遗传算法(粒子群算法、人工鱼群算法等)的投影寻踪模型MATLAB源代码...
  9. Android 学习
  10. 安装构建以太坊钱包Parity
  11. Python——类和对象、魔术方法(day07)
  12. Linux基础知识小结(一)
  13. 微信最火html5游戏平台,盘点五个热门HTML5游戏微信公众号
  14. arduino 的红外遥控解码
  15. 同花顺服务器维护,同花顺云端服务器
  16. 使用uview中的u-upload上传图片
  17. 【持续更新】SDN Software Defined Networks(Thomas D.Nadeau Ken Gray)翻译
  18. 家里想养花了(持续更新)
  19. 团子杂记:SAP可持续化发展解决方案之产品碳足迹管理(PFM)简介
  20. KaliLinux-OneForAll子域名扫描神器

热门文章

  1. Java中关于创建文件,Java实现 PDF、Word、Excel、Html、XML互转及与图片互相转化、图片像素调节,待更新整理中
  2. 微信再次重大更新,同时支持5个浮窗展示,你怎么看?
  3. SQL中进行去重的方法
  4. 【程序员金典】字符串互异
  5. 软件测试工程师思维逻辑题汇总
  6. 国外著名英文搜索引擎大全及分类
  7. 锯齿波FMCW雷达目标检测原理
  8. ANSYS ICEM常用操作
  9. python 节气_Python开源日志01:pyGregorian2LunarCalendar公历农历转换、阳历阴历转换、二十四节气计算...
  10. 如何制作U盘启动盘并且安装系统(保姆级教学)