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

#!/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...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值