在n秒后如何退出命令?

11

我正在编写一个脚本,想知道如何请求其中一条命令在几秒钟后退出。例如,假设我的脚本在其中运行了2个应用程序命令。

#!/bin/bash

for i in `cat servers`
do
<command 1> $i >> Output_file  #Consistency command
<command 2> $i >> Output_file  #Communication check
done

这些命令是用来检查与应用程序的一致性和通信的。我想知道如何确保命令 1 和 2 运行只需几秒钟,如果特定主机没有响应,就继续执行下一个命令。


我看了一下,难道没有更简单的方法吗??我不想让我的小脚本变得太复杂! :) - Marcos
这对于imagemagick的“display”命令非常有用,因为它与xargs不兼容。 - Sridhar Sarnobat
1个回答

17

bash coreutils已经拥有“timeout”命令。

从手册介绍:

说明

启动COMMAND,并且如果在NUMBER秒后仍在运行,则终止它。 SUFFIX可以为“s”表示秒(默认值),“m”表示分钟,“h”表示小时或“d”表示天。

例如:

timeout 5 sleep 6


我正在尝试在Solaris上运行rpcinfo... "timeout 5 rpcinfo -p server_name" 它显示"command not found",但是手册中有相关条目。 - Marcos
1
“timeout”不是bash内置命令,而是由GNU coreutils提供的。 - devnull
那么我该如何使用它呢? - Marcos
@Marcos 不确定你的意思?试试安装 coreutils。如果可以的话,你应该能够得到 timeout 命令。 - Chris

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接