2012-06-01 2 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

Могу ли я предложить вам изучить GNU 'screen' в качестве менеджера терминалов вместо использования графического менеджера терминалов? Взгляните на www.gnu.org/s/screen/. Пакеты доступны для всех вариантов linux (в их репозиториях по умолчанию). Затем вы можете подключить экран к менеджеру терминала по вашему выбору. Не решение, которое вы ищете, но лучший вариант в долгосрочной перспективе. – 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

tnx, wait $ {!}, Решил проблему, дождитесь окончания последнего задания на заднем плане. – jarhead

+2

'wait' без' $ {!} 'Ждет всех заданий. Однако 'wait $ {!}' Ждет последнего PID фона. если последнее задание заканчивается раньше старых заданий, вы выйдете, даже если старые задания будут запущены – Samveen

+0

ur right, tnx again .. – jarhead

14

Используйте hold вариант:

xterm -hold -e file.sh 

-Постой Включите удержания ресурса, то есть, Xterm не будет немедленно разрушить его окно, когда оболочка co мм и заканчивается. Он будет ждать , пока вы не будете использовать диспетчер окон для уничтожения/уничтожения окна, или если вы используете записи меню, которые посылают сигнал, например, HUP или KILL.

6

Я попробовал -холд, и он оставляет xterm в состоянии безответственности, которое требует закрытия через нестандартные средства (диспетчер окон, команда kill). Если вы предпочли бы иметь открытую оболочку, из которой можно выйти, попробуйте добавить эту оболочку в конце команды:

xterm -e "cd /etc; bash" 

я наткнулся на ответ на Super User.

+0

Это работает намного лучше! – Abhinav

0

Основываясь на предыдущем ответе, если вы укажете $ SHELL вместо bash, он будет использовать предпочтительную оболочку пользователей.

xterm -e "cd /etc; $SHELL" 

 Смежные вопросы

  • Нет связанных вопросов^_^