2012-08-15 5 views
6

セットアップ: Ubuntu 12.04,32ビット。 Scala 2.9.1; Javaの1.6.0_24コマンド `timeout`はScalaでは動作しません - なぜですか?

説明:

bashスクリプト内で実行する場合、bashのコマンドライン上で正常に動作します/usr/bin/timeout 10 scala -versionコマンドは、それが立ち往生しながら。

bashスクリプトに入れて非常に同じコマンドが捕まってしまった
[email protected]:~$ /usr/bin/timeout 10 scala -version 
Scala code runner version 2.9.1 -- Copyright 2002-2011, LAMP/EPFL 
[email protected]:~$ echo $? 
1 

testScript.sh

(期間< 1秒)をコマンドラインで実行する

#!/bin/bash 
/usr/bin/timeout 10 scala -version 
echo "finished with $?" 

testScript.shを実行する(所要時間10秒):

[email protected]:~/scripts$ ./testScript.sh 
Scala code runner version 2.9.1 -- Copyright 2002-2011, LAMP/EPFL 
finished with 124 
[email protected]:~/scripts$ 

注:この問題はScalaで使用されているJavaでは表示されません。Scala固有の問題のようです。

質問:なぜtimeoutコールでスクリプトが停止しましたか?

この問題を解決するにはどうすればよいですか?

答えて

9

--foregroundオプションをお試しください。 man timeoutから:

--foreground

シェルプロンプトから直接、タイムアウトを実行していない、COMMANDは、TTYから読み込まれ、TTY信号を受信することができます。このモードでは、COMMANDの子はタイムアウトしません。

次のテストスクリプトを使用する:

#!/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を指定しないと、説明したとおりにスクリプトがハングします。

+0

本当にありがとうございました。 –

+0

あなたは歓迎です。 –

関連する問題