Bash 在循环中执行程序并在超过时间限制时终止当前进程的脚本
我有一个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 #
谢谢 这应该适用于任何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
并行执行命令不是缺少一些
&
而不是一个接一个吗?并行执行命令不是缺少一些&
而不是一个接一个吗?