繁体   English   中英

Bash:如何检查命令是否及时执行

[英]Bash: how to check if a command executed in time

我正在尝试在要在终端中执行的 bash 脚本中执行此命令expressvpn connect 问题是有时连接时间太长,我想确保它不会花费太多时间。 我试过这个命令

some_command
if [ $? -eq 0 ]; then
    echo OK
else
    echo FAIL
fi

但这是为了检查命令是否被执行,而我想确保如果它没有在 10 秒内执行,那么脚本必须停止并从头开始。 我怎么做? 这是完整的代码

#!/bin/bash

expressvpn disconnect 

while (0<1); do
    expressvpn connect smart location
    xdg-open http://link 
    sleep 15 
    xdotool key Control_L+w  
    expressvpn disconnect  
    expressvpn refresh
done

我希望我很清楚。 提前致谢。

希望对你有帮助。

timeout 15s expressvpn connect smart location>/dev/null &

你可以简单地执行这个:

 timeout 15s expressvpn connect smart location

 case "$?" in
     0)   echo "OK"      ;;
     124) echo "TIMEOUT" ;;
     *)   echo "FAIL"    ;;
 esac

人超时

退出状态:

  • 124 如果命令超时
  • 125 如果超时本身失败
  • 126 如果找到命令但无法调用
  • 127 如果找不到命令
  • 137 如果发送命令,则发送 KILL(9) 信号 (128+9)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM