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

Ham*_*eza 5 bash timeout

我想在等待结果 2 秒后终止命令。如果命令没有给出结果(花费太长时间),命令应该停止。我浏览了文档并测试了以下命令:

timeout --kill-after=2 ls /mnt/ftp/;
echo $?;
Run Code Online (Sandbox Code Playgroud)

或者

timeout -k 2 ls /mnt/ftp/;
echo $?;
Run Code Online (Sandbox Code Playgroud)

但是,我收到此错误:

timeout: invalid time interval ‘ls’
Run Code Online (Sandbox Code Playgroud)

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

timeout 2 ls /mnt/ftp/;
Run Code Online (Sandbox Code Playgroud)

Ini*_*ian 6

的文档timeout在某种程度上很棘手。如果你仔细参考它说

$ timeout --help
Usage: timeout [OPTION] DURATION COMMAND [ARG]...
  or:  timeout [OPTION]
Start COMMAND, and kill it if still running after DURATION.
Run Code Online (Sandbox Code Playgroud)

这里选项-k本身采用一个值,后跟一个所需的值DURATION,因此您的命令在使用时应该两个值背靠背,-k如下所示。抛出错误是因为DURATION是要使用的强制性参数。

timeout --kill-after=2 2 ls /mnt/ftp/;
Run Code Online (Sandbox Code Playgroud)

第一个选项--kill-after=2OPTION命令的标志的一部分,它接受值2,而DURATION它本身分别接受一个值2

timeout -k 2 2 ls /mnt/ftp/;
Run Code Online (Sandbox Code Playgroud)