Bash 在循环中执行程序并在超过时间限制时终止当前进程的脚本

Bash 在循环中执行程序并在超过时间限制时终止当前进程的脚本,bash,scripting,Bash,Scripting,我有一个bash脚本,它在循环中执行一个程序,但我想为程序的每次执行设置一个最大时间限制,也就是说,如果超过时间限制,我只想取消当前的执行,但我不想破坏整个循环 谢谢 这应该适用于任何Posix shell,包括bash #!/bin/sh while :; do echo starting command while :; do trap break SIGTERM sleep 5; kill $$ # 5 second timeout sleep 10 #

我有一个bash脚本,它在循环中执行一个程序,但我想为程序的每次执行设置一个最大时间限制,也就是说,如果超过时间限制,我只想取消当前的执行,但我不想破坏整个循环


谢谢

这应该适用于任何Posix shell,包括bash

#!/bin/sh
while :; do
  echo starting command
  while :; do
    trap break SIGTERM
    sleep 5; kill $$  # 5 second timeout
    sleep 10 # replace this sleep with your real command
  done
  echo Command terminated, restarting...
done

这应该适用于任何Posix shell,包括bash

#!/bin/sh
while :; do
  echo starting command
  while :; do
    trap break SIGTERM
    sleep 5; kill $$  # 5 second timeout
    sleep 10 # replace this sleep with your real command
  done
  echo Command terminated, restarting...
done

在我的Ubuntu上有一个名为timeout的命令。你可以试试这个:

timeout 1s yes 
这将使“是”过程在1秒后结束

注意:使用此命令还可以将信号指定为参数

您还可以使用以下命令验证持续时间常数是否得到遵守:

time timeout 3s yes

在我的Ubuntu上有一个名为timeout的命令。你可以试试这个:

timeout 1s yes 
这将使“是”过程在1秒后结束

注意:使用此命令还可以将信号指定为参数

您还可以使用以下命令验证持续时间常数是否得到遵守:

time timeout 3s yes

并行执行命令不是缺少一些
&
而不是一个接一个吗?并行执行命令不是缺少一些
&
而不是一个接一个吗?