我想在等待结果 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)
的文档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=2是OPTION命令的标志的一部分,它接受值2,而DURATION它本身分别接受一个值2。
timeout -k 2 2 ls /mnt/ftp/;
Run Code Online (Sandbox Code Playgroud)