设置:Ubuntu12.04,32位;Scala2.9.1;Java1.6.0_24
描述:
虽然在bash命令行中,命令/usr/bin/timeout 10 scala -version工作正常,但当在bash脚本中执行时,它会被卡住。
在命令行上执行(持续时间< 1秒):
user@ubuntu:~$ /usr/bin/timeout 10 scala -version
Scala code runner version 2.9.1 -- Copyright 2002-2011, LAMP/EPFL
user@ubuntu:~$ echo $?
1放入bash脚本的相同命令被卡住了:
testScript.sh
#!/bin/bash
/usr/bin/timeout 10 scala -version
echo "finished with $?"执行testScript.sh (持续时间10秒):
user@ubuntu:~/scripts$ ./testScript.sh
Scala code runner version 2.9.1 -- Copyright 2002-2011, LAMP/EPFL
finished with 124
user@ubuntu:~/scripts$ 注意: Java没有出现这个问题( Scala使用Java),它似乎是Scala特有的问题。
问题:为什么脚本中的timeout调用被卡住了?
我怎样才能解决这个问题/什么才是好的解决办法?
发布于 2012-08-15 11:57:47
尝试包括--foreground选项。来自man timeout
-前景 当不直接从shell提示符运行超时时,允许命令从TTY读取并接收TTY信号。在这种模式下,命令的子级不会超时。
使用以下测试脚本:
#!/bin/bash
/usr/bin/timeout --foreground 10 scala -version
echo "finished with $?"它看起来很好用。
$ ./test.sh
Scala code runner version 2.9.1 -- Copyright 2002-2011, LAMP/EPFL
finished with 1如果没有--foreground,脚本就会如您所描述的那样挂起。
https://stackoverflow.com/questions/11967663
复制相似问题