2012-06-01 12 views
8

को समाप्त किए बिना मैं xterm -e file.sh को समाप्त किए बिना चलाने के लिए चाहता हूं।रन xterm -e बिना

फ़ाइल में, मैं पृष्ठभूमि में आदेश भेज रहा हूं और जब स्क्रिप्ट पूरी की जाती है, तो वे अभी भी समाप्त नहीं हो जाते हैं।

क्या मैं वर्तमान में कर रहा हूँ है:

(cd /myfolder; /xterm -ls -geometry 115x65 -sb -sl 1000) 

और उसके बाद के बाद पॉपअप विंडो खुलेगी,

sh file.sh 
exit 

मुझे क्या करना चाहते हैं की तरह कुछ है: बिना

(cd /myfolder; /xterm -ls -geometry 115x65 -sb -sl 1000 -e sh file.sh) 

पृष्ठभूमि खत्म करने के आदेश तक समाप्त और प्रतीक्षा करें।

कोई भी जानता है कि यह कैसे करें?

+1

अपने आदेशों को पृष्ठभूमि न बनाएं। क्या यह एक विकल्प है? –

+0

नहीं, मैं कुछ साथ – jarhead

+1

चला रहा हूं, क्या मैं सुझाव देता हूं कि आप ग्राफिकल टर्मिनल मैनेजर का उपयोग करने के बजाय टर्मिनल मैनेजर के रूप में जीएनयू 'स्क्रीन' का पता लगा सकते हैं? Www.gnu.org/s/screen/ पर एक नज़र डालें। पैकेज लिनक्स के सभी स्वादों के लिए उपलब्ध हैं (उनके डिफ़ॉल्ट पैकेज रिपोज़ में)। फिर आप स्क्रीन को अपनी पसंद के टर्मिनल मैनेजर से कनेक्ट कर सकते हैं। वह समाधान नहीं जिसे आप ढूंढ रहे हैं, लेकिन लंबे समय तक एक बेहतर विकल्प है। – Samveen

उत्तर

1

शेल स्क्रिप्ट में अंतर्निहित wait का उपयोग करें। यह तब तक इंतजार करेगा जब तक सभी पृष्ठभूमि नौकरियां समाप्त नहीं हो जातीं।

कार्य उदाहरण:

#!/bin/bash 
# Script to show usage of wait 
sleep 20 & 
sleep 20 & 
sleep 20 & 
sleep 20 & 
sleep 20 & 
wait 

उत्पादन

[email protected]:~$ bash test.sh 
[1] Done     sleep 20 
[2] Done     sleep 20 
[3] Done     sleep 20 
[4]- Done     sleep 20 
[5]+ Done     sleep 20 
[email protected]:~$ 
+0

टीएनएक्स, $ {!} प्रतीक्षा करें, समस्या हल हो गई है, यह तब तक इंतजार कर रहा है जब तक कि पृष्ठभूमि में आखिरी नौकरी – jarhead

+2

'प्रतीक्षा' '' {{}} बिना सभी नौकरियों के इंतजार कर रही है। हालांकि 'प्रतीक्षा करें $ {!}' अंतिम पृष्ठभूमि पीआईडी ​​के लिए इंतजार कर रहा है। यदि आखिरी नौकरी पुरानी नौकरियों से पहले समाप्त हो जाती है, तो आप पुरानी नौकरियां – Samveen

+0

यूआर दाएं चल रहे हैं, फिर भी बाहर निकलेंगे, tnx फिर से .. – jarhead

14

उपयोग hold विकल्प:

xterm -hold -e file.sh 

, पकड़ संसाधन चालू पकड़ो यानी, टर्म तुरंत नहीं होगा खोल सह जब अपनी खिड़की को नष्ट mmand पूरा करता है। यह तक प्रतीक्षा करेगा जब तक आप खिड़की को नष्ट/मारने के लिए विंडो प्रबंधक का उपयोग नहीं करते हैं, या यदि आप सिग्नल भेजने वाले मेनू प्रविष्टियों का उपयोग करते हैं, उदाहरण के लिए, HUP या KILL।

6

मैंने कोशिश की, और यह एक उत्तरदायी स्थिति में xterm छोड़ देता है जिसके लिए गैर मानक माध्यमों (विंडो प्रबंधक, एक हत्या आदेश) के माध्यम से बंद करने की आवश्यकता होती है। यदि आप इसके बजाय एक खुला खोल जिसमें से आप बाहर निकल सकते हैं चाहते हैं, तो अपनी कमांड के अंत करने के लिए है कि खोल जोड़ने का प्रयास करें:

xterm -e "cd /etc; bash" 

मैं Super User पर जवाब बारे में जाना।

+0

यह बहुत बेहतर काम करता है! – Abhinav

0

एक पूर्ववर्ती उत्तर पर बिल्डिंग, यदि आप बैश के बजाय $ SHELL निर्दिष्ट करते हैं, तो यह उपयोगकर्ताओं को पसंदीदा शैल का उपयोग करेगा।

xterm -e "cd /etc; $SHELL"