Bash/Shell 脚本中命令执行的时间限制器

Bash/Shell 脚本中命令执行的时间限制器

我有一个如下所示的 shell 脚本:

echo firstOutput
read -s
command0
command1a
command1b
command1c
echo secondOutput
command2

command1a、、是单独的命令command1bcommand1c但它们可以按任意顺序执行,并且按照以下解释的意义来说是一个组。

我现在想改进它,这样即使一个命令卡住了,脚本也能继续运行。command0需要先执行,并且有 8 秒钟的时间来运行。如果它在 8 秒内没有完成,脚本将继续command1[a-c]运行,总共有 5 秒钟的时间。如果它们没有在给定的 5 秒内终止,command2则应调用。以防万一这很重要:command2是此脚本的最后一个命令。

编辑:澄清一下:我知道如何编写一个在允许的最大时间内执行命令的脚本。但是,这些都是超时,我希望脚本尽可能快地运行。整个脚本通常在按下 Enter 键后几分之一秒内运行完毕(参见第行read -s)。

答案1

echo firstOutput
read -s

command0 &
sleep 8

command1a &
command1b &
command1c &
sleep 5

echo secondOutput
command2

答案2

timeout命令确实执行了您想要的操作。请参阅man timeout

NAME
   timeout - run a command with a time limit

SYNOPSIS
   timeout [OPTION] DURATION COMMAND [ARG]...
   timeout [OPTION]

DESCRIPTION
   Start COMMAND, and kill it if still running after DURATION.

相关内容