我想在等待结果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/;
答案 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
标志的一部分,其值为2
,DURATION
本身分别为值2
。
timeout -k 2 2 ls /mnt/ftp/;