首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >命令“`timeout`”不适用于Scala --为什么?

命令“`timeout`”不适用于Scala --为什么?
EN

Stack Overflow用户
提问于 2012-08-15 10:22:22
回答 1查看 551关注 0票数 6

设置:Ubuntu12.04,32位;Scala2.9.1;Java1.6.0_24

描述:

虽然在bash命令行中,命令/usr/bin/timeout 10 scala -version工作正常,但当在bash脚本中执行时,它会被卡住。

在命令行上执行(持续时间< 1秒):

代码语言:javascript
复制
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

代码语言:javascript
复制
#!/bin/bash
/usr/bin/timeout 10 scala -version
echo "finished with $?"

执行testScript.sh (持续时间10秒):

代码语言:javascript
复制
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调用被卡住了?

我怎样才能解决这个问题/什么才是好的解决办法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-15 11:57:47

尝试包括--foreground选项。来自man timeout

-前景 当不直接从shell提示符运行超时时,允许命令从TTY读取并接收TTY信号。在这种模式下,命令的子级不会超时。

使用以下测试脚本:

代码语言:javascript
复制
#!/bin/bash
/usr/bin/timeout --foreground 10 scala -version
echo "finished with $?"

它看起来很好用。

代码语言:javascript
复制
$ ./test.sh 
Scala code runner version 2.9.1 -- Copyright 2002-2011, LAMP/EPFL
finished with 1

如果没有--foreground,脚本就会如您所描述的那样挂起。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11967663

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档