Linux screen programming, automatic monitoring and sending commands to screen

Source: Internet
Author: User

#!/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 () {# send the command to be executed to 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 () {# check whether a program is running 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 () {# read the list of programs to be checked and the session name and window number of the screen to be checked from the file. #$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
# Send an email .... 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 shocould 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 $ commandfiif [$ #-lt 2]; then echo usage: bash keep_running list_file sleep_time exitfikeep_running $1 $2 =========================list_file example: 16902. watch_dog; 2; bash test_loop.sh


Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.