下面的timeout命令行调用(这没有任何意义,只是为了测试)不能像预期的那样工作。它等待10秒,并且在3秒后不会停止命令的工作。为什么?
timeout 3 ls | sleep 10发布于 2012-08-15 20:06:42
您的命令所做的就是运行timeout 3 ls并将其输出通过管道传输到sleep 10。因此,sleep命令不受timeout的控制,它将始终休眠10秒。
像这样的东西会给出想要的效果。
timeout 3 bash -c "ls | sleep 10"发布于 2012-08-14 06:20:31
“%ls”命令的运行时间不应超过3秒。我认为正在发生的是你说(1) ls在3秒后超时(同样,这不会发生,因为ls不应该花费接近3秒的时间来运行),然后(2)将结果通过管道传输到睡眠10,它不需要比你给出的数字更多的参数。因此,ls发生了,超时无关紧要,bash会休眠10秒。
发布于 2012-08-14 06:55:24
我知道如何获得您想要的效果的唯一方法是将管道命令放入一个单独的文件中:
cat > script
ls | sleep 10
^D
timeout 3 sh scripthttps://stackoverflow.com/questions/11943104
复制相似问题