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
    }

  • 相关阅读:
    linux实践——内核编程 基础模块
    linux内核分析 课程总结
    linux内核分析 期中总结
    linux内核分析 第八周
    linux内核分析 第4章读书笔记
    linux内核分析 第七周
    2020JAVA面试题
    springboot redis工具类
    mysql关于时间函数的应用
    jetty的web部署
  • 原文地址:https://www.cnblogs.com/ruiy/p/ShellTimeout.html
Copyright © 2011-2022 走看看