2012-08-15 14 views
6

सेटअप: उबंटू 12.04, 32 बिट; स्कैला 2.9.1; जावा 1.6.0_24कमांड 'टाइमआउट' स्कैला के साथ काम नहीं करता - क्यों?

विवरण:

बैश कमांड लाइन आदेश /usr/bin/timeout 10 scala -version ठीक काम करता है, यह जब एक bash स्क्रिप्ट के भीतर क्रियान्वित अटक जाती है है। कमांड लाइन पर

निष्पादित (अवधि < 1 सेकंड):

[email protected]:~$ /usr/bin/timeout 10 scala -version 
Scala code runner version 2.9.1 -- Copyright 2002-2011, LAMP/EPFL 
[email protected]:~$ echo $? 
1 

बहुत ही आदेश एक bash स्क्रिप्ट में डाल अटक गया:

testScript.sh:

#!/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$ 

नोट: समस्या जावा (जो स्कैला द्वारा उपयोग की जाती है) के साथ प्रकट नहीं होती है, यह एक स्कैला विशिष्ट समस्या प्रतीत होती है।

प्रश्न: स्क्रिप्ट में timeout कॉल क्यों अटक गया?

मैं इसे कैसे ठीक कर सकता हूं/एक अच्छा कामकाज क्या होगा?

उत्तर

9

--foreground विकल्प सहित प्रयास करें। man timeout से:

--foreground

जब सीधे एक सुरक्षा प्रॉम्प्ट से टाइमआउट नहीं चल रहा, कमांड 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

आपका स्वागत है जॉन। –

संबंधित मुद्दे