首页 > 解决方案 > 如何为在linux中执行的命令设置命令执行超时

问题描述

我有下面的shell脚本,cmdx是testtool命令,它等到执行,一旦执行完成,下一个命令回显“结束测试”就会执行。

#!/bin/bash
echo "Starting tests"
cmdx
echo "End test"

我需要为 cmdx 设置一些硬编码的执行时间(例如:持续时间 60 分钟)。后 60 分钟 cmdx 应该停止,下一个命令 echo "End test" 应该被执行,你能帮忙我们如何实现这一点吗?

标签: linux

解决方案


有一个timeout(1)命令。

timeout 3600 command arguments...

command将在 3600 秒后杀死。您可以选择带有-s选项的信号。

请注意,因为timeout是外部命令,所以command必须是外部命令(不能是 shell 函数)。如果不是,你可以有类似的东西

#!/bin/bash
if [ "$1" = "--inner" ]; then
    multiple
    test
    commands
    …
else
    echo "Starting tests"
    timeout 3600 "$0" --inner
    echo "End test"
fi

推荐阅读