zoukankan      html  css  js  c++  java
  • shell timeout

    写脚本的时候,经常需要用到超时控制。看《shell专家编程》时看到一个好例:修改了一下,

    1.超过timeout时间还没执行完,则kill进程,发邮件告警:

    set-x
    mailSend()
    {
            mailContent="xxxx Web response time over 5 seconds"
            echo $mailContent | mail -s "xxxxxx Web TimeOut"xxxxx@xxx.cion
    }
    timeout()
    {
            waitfor=3
            command=$*
            $command &
            commandpid=$!

            ( sleep $waitfor ; kill -9 $commandpid  >/dev/null2>&1&& mailSend )&

            watchdog=$!
            sleeppid=$PPID
            wait $commandpid >/dev/null2>&1

            kill $sleeppid >/dev/null2>&1
    }

    #测试的函数

    test123()
    {
            sleep 20
    }

    timeout test123

    
    

    2.超过timeout时间还没执行完,只发邮件告警,程序正常执行:

    mailSend()
    {
            mailContent="xxxxe Web response time over 5 seconds,Please have a check !"
            echo $mailContent | mail -s "xxxxx WEB response time over 5 senconds" $mailTo
    }
    timeout()
    {
            waitfor=6
            command=$*
            $command &
            commandpid=$!

            ( sleep $waitfor ;  mailSend )&

            watchdog=$!
            sleeppid=$PPID
            wait $commandpid >/dev/null2>&1
            kill  -9 $watchdog >/dev/null2>&1
            kill $sleeppid >/dev/null2>&1
    }

  • 相关阅读:
    Git 获取远程分支
    entOS查看系统信息-CentOS查看命令
    CentOS6.5下用yum安装 git
    CENTOS如何禁用ROOT本地或远程SSH登录
    ProtoBuf练习(二)
    ProtoBuf练习(一)
    ProtoBuf练习
    Protocol Buffers官方文档(开发指南)
    Protocol Buffers官方文档(proto3语言指南)
    Boost Python学习笔记(五)
  • 原文地址:https://www.cnblogs.com/ruiy/p/ShellTimeout.html
Copyright © 2011-2022 走看看