使用超时命令时出错 - 无效的时间间隔

时间:2018-02-12 05:53:17

标签: bash timeout

我想在等待结果2秒后杀死命令。如果命令没有得出结果(花了太长时间),命令应该停止。我查看了文档并测试了以下命令:

timeout --kill-after=2 ls /mnt/ftp/;
echo $?;

timeout -k 2 ls /mnt/ftp/;
echo $?;

但是,我收到此错误:

timeout: invalid time interval ‘ls’

注意:以下命令在超时期限后停止,不会终止进程:

timeout 2 ls /mnt/ftp/;

1 个答案:

答案 0 :(得分:2)

timeout的文档在某种程度上很棘手。如果你仔细地提到它,那么

$ timeout --help
Usage: timeout [OPTION] DURATION COMMAND [ARG]...
  or:  timeout [OPTION]
Start COMMAND, and kill it if still running after DURATION.

此处,选项-k本身会获取一个值,后跟DURATION所需的值,因此在使用-k时,您的命令应该背靠背两个值,如下所示。抛出错误是因为DURATION是要使用的必需参数。

timeout --kill-after=2 2 ls /mnt/ftp/;

第一个选项--kill-after=2是该命令的OPTION标志的一部分,其值为2DURATION本身分别为值2

timeout -k 2 2 ls /mnt/ftp/;