写脚本的时候,经常需要用到超时控制。看《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/null 2>&1 && mailSend ) &
watchdog=$!
sleeppid=$PPID
wait $commandpid > /dev/null 2>&1
kill $sleeppid > /dev/null 2>&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/null 2>&1
kill -9 $watchdog > /dev/null 2>&1
kill $sleeppid > /dev/null 2>&1
}
转载于:https://my.oschina.net/u/3415127/blog/1510194
分享到:
相关推荐
根据提供的信息,《Shell脚本专家指南》是一本深入讲解Shell脚本编程的书籍,适合中级到高级的Shell程序员以及需要解决日常问题的系统管理员阅读。本书不仅提供了实用的脚本和技巧,还深入探讨了Shell脚本编程的核心...
Linux 提供了 flock 命令来实现锁机制,该命令可以在 shell 脚本中设置锁,以控制对共享资源的访问。 flock 命令的基本格式有两种: 1. flock [-sxon] [-w timeout] lockfile [-c] command... 2. flock [-sxun] [-...
本话题将深入探讨如何通过编写和利用Shell脚本来实现Zookeeper的心跳监测,以确保Redis的高可用性。 首先,我们需要理解Zookeeper的角色。在高可用Redis集群中,Zookeeper作为一个中心化的仲裁者,负责监控Redis...
ftp自动下载shell脚本,可以制定默认的用户名,下载地址。
在Linux环境中,shell脚本是一种强大的工具,可以自动化执行一系列命令和任务。在这个特定的案例中,`img_downloader.sh` 是一个用于批量下载网页中链接的图片的shell脚本,这在处理需要大量图片资源的项目时非常...
在IT行业中,shell脚本是Linux/Unix系统中常用的一种自动化工具,用于执行一系列命令、进行文件操作或者处理数据。Zookeeper是一个分布式协调服务,常用于管理大型分布式系统的配置信息、命名服务、集群同步等任务。...
在Windows和Linux环境中,启动批处理脚本(bat)和shell脚本(sh)是常见的任务,特别是在自动化和脚本执行过程中。`RunScript.java`和`StreamGobbler.java`这两个文件可能就是用来实现这个功能的。 `RunScript....
在Java编程中,有时我们需要与操作系统进行交互,执行一些系统级别的任务,比如自动化运维、文件管理等,这时就可能需要用到调用Shell脚本。本文将详细介绍如何在Java中完美封装shell脚本的调用方法,并提供相关的...
然而,直接使用`Runtime.exec()`可能存在一些问题,例如处理命令的输出和错误流、超时控制等。为了解决这些问题,我们可以创建一个辅助类,如`CommandHelper`,来封装执行命令的逻辑。在提供的代码片段中,`...
为了解决这一问题,这篇博文介绍了如何使用expect工具实现shell脚本中的SSH无交互自动登录。 expect工具是基于Tcl语言编写的,它能够通过自动化的方式响应程序输出的提示信息。在ssh命令执行时,expect可以用来捕获...
Zabbix 调用脚本超时解决方案 在 Zabbix 中,调用脚本超时是一个常见的问题。当脚本执行时间超过 30 秒时,Zabbix 将获取该脚本执行的结果。这是由于 Zabbix 的内部源码限制了脚本执行的时间最多不超过 30秒。因此...
本文将深入探讨如何使用Linux的Shell脚本来定时处理MySQL的超时Locked进程。 首先,我们需要理解MySQL中的“Locked”进程。在MySQL中,如果一个查询执行时间过长,占用锁资源未释放,就可能导致其他查询等待,形成...
Linux Shell脚本是一种在Linux操作系统环境下执行的命令脚本,主要用于自动化执行一系列系统操作。它是一种解释型语言,主要用于简化日常任务,特别是那些需要重复执行的任务。以下是对Linux Shell脚本基础编程的...
### Shell脚本编译基础知识点 #### 一、Shell脚本编写规则 ##### 1.1 必要条件 - **环境准备**:确保系统已安装支持的Shell环境,如Bash、Sh等。 - **编辑器选择**:可以选择任何文本编辑器来编写脚本,如vi/vim...
在IT行业中,尤其是在系统管理和自动化任务执行领域,Shell脚本编程是不可或缺的技能之一。本文将深入探讨如何在Shell脚本中实现最简单的死循环,这对于编写自动化任务、持续监控或者进行其他需要无限循环的场景非常...
Shell脚本实现自动输入密码登录服务器是自动化运维和部署中的常见需求,特别是在执行涉及权限验证的任务时,如scp文件传输或SSH远程连接。在这种情况下,使用expect工具可以帮助我们编写脚本,自动处理需要用户交互...
# telnet ip port 批量测试多个 ip|port 每次telnet 都要手动关闭 ctrl + ] 然后 ctrl + d 很麻烦 使用 (sleep 1;) | telnet $ip $port 就能1秒自动断开了
在IT行业中,尤其是在系统管理和自动化任务执行中,Shell脚本是一种常见的工具。本文将深入探讨如何使用Shell脚本来实现文件锁功能,特别是排它锁,以防止脚本重复执行,确保数据安全和程序的正确性。 文件锁是多...