2012-06-01 36 views
8

Chcę uruchomić xterm -e plik.sh bez zakończenia.uruchom xterm -e bez kończenia

W pliku wysyłam polecenia do tła, a po wykonaniu skryptu nadal nie są one zakończone.

Co robię aktualnie jest:

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

a następnie po zamknięciu okna wyskakuje

sh file.sh 
exit 

Co chcę zrobić coś jak:

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

bez kończy się i czeka, aż komendy w tle zakończą się.

Ktoś wie, jak to zrobić?

+1

Nie wyświetlaj swoich poleceń. Czy to jest opcja? –

+0

Nie, używam kilku razem – jarhead

+1

Czy mogę zaproponować, abyś przejrzał GNU 'screen' jako menedżer terminali zamiast graficznego menedżera terminali? Spójrz na www.gnu.org/s/screen/. Pakiety są dostępne dla wszystkich smaków Linuksa (w ich domyślnych repozytoriach pakietów). Następnie możesz podłączyć ekran do wybranego menedżera terminali. Nie jest to rozwiązanie, którego szukasz, ale lepsza opcja na dłuższą metę. – Samveen

Odpowiedz

1

Użyj wbudowanego w Ciebie skryptu powłoki wait. Będzie czekać, aż wszystkie zadania w tle zostaną zakończone.

Przykład pracy:

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

Wyjście

[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

tnx, poczekaj $ {!}, Rozwiązany problem, to poczekaj, aż ostatnia praca w tle zakończy się – jarhead

+2

'wait' bez' $ {!} 'Czeka na wszystkie zadania. Jednak 'wait $ {!}' Czeka na ostatni PID tła. jeśli ostatnie zadanie zostanie zakończone przed starszymi zadaniami, zakończysz pracę, nawet jeśli starsze prace będą działać ponownie, – Samveen

+0

ur, tnx ponownie .. – jarhead

14

Zastosowanie hold opcja:

xterm -hold -e file.sh 

-hold Włącz zasobu hold, czyli xterm nie od razu zniszczyć jego okno, gdy skorupa będzie współdziałać mmand kończy. Będzie czekać , dopóki nie użyjesz menedżera okien do zniszczenia/zabicia okna, lub jeśli użyjesz wpisów menu, które wysyłają sygnał, np. HUP lub KILL.

6

Próbowałem -hold i pozostawia xterm w stanie bez odpowiedzi, która wymaga zamknięcia przez nietypowych środków (menedżera okien, polecenie kill). Jeśli wolisz stanie surowym otwartym, z którego można wyjść, warto dodać, że Shell do końca polecenia:

xterm -e "cd /etc; bash" 

natknąłem odpowiedź na Super User.

+0

To działa o wiele lepiej! – Abhinav

0

W oparciu o odpowiedź previoius, jeśli podasz $ SHELL zamiast bash, użyje preferowanej powłoki użytkownika.

xterm -e "cd /etc; $SHELL"