2012-06-01 19 views
8

Quiero ejecutar xterm -e file.sh sin terminar.ejecuta xterm -e sin terminar

En el archivo, estoy enviando comandos al fondo y cuando el script está listo, todavía no están terminados.

Lo que estoy haciendo actualmente es:

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

y luego después de la ventana aparece

sh file.sh 
exit 

Lo que quiero hacer es algo como:

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

sin terminando y espera hasta que terminen los comandos en el fondo.

¿Alguien sabe cómo hacer eso?

+1

No fondo sus comandos. ¿Es eso una opción? –

+0

no, estoy corriendo un poco juntos – jarhead

+1

¿Puedo sugerir que explore GNU 'pantalla' como un administrador de terminal en lugar de usar un administrador de terminal gráfico? Eche un vistazo a www.gnu.org/s/screen/. Los paquetes están disponibles para todos los gustos de Linux (en sus repositorios de paquetes predeterminados). Luego puede conectar la pantalla al administrador de terminal de su elección. No es la solución que está buscando, sino una mejor opción en el largo plazo. – Samveen

Respuesta

1

Utilice el wait incorporado en su script de shell. Esperará hasta que finalicen todos los trabajos en segundo plano.

Ejemplo de trabajo:

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

La salida

[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, espere $ {!}, Resuelva el problema, espere hasta que finalice el último trabajo en el fondo – jarhead

+2

'wait' sin' $ {!} 'Espera todos los trabajos. Sin embargo, 'wait $ {!}' Espera el último PID de fondo. si el último trabajo finaliza antes de los trabajos anteriores, saldrá incluso si se están ejecutando trabajos más antiguos – Samveen

+0

ur right, tnx otra vez ... – jarhead

14

Uso hold opción:

xterm -hold -e file.sh 

-hold A su vez en el recurso de espera, es decir, xterm no lo hará de inmediato destruir su ventana cuando el shell co mmand completa. Esperará hasta que use el administrador de ventanas para destruir/matar la ventana, o si usa las entradas del menú que envían una señal, por ejemplo, HUP o KILL.

6

He intentado -tenga, y deja xterm en un estado que no responde que requiere el cierre a través de medios no estándar (el administrador de ventanas, un comando de matar). Si se quiere tener una concha abierta de la que puede salir, trate de añadir que la cáscara hasta el final de su mandato:

xterm -e "cd /etc; bash" 

me encontré con la respuesta en Super User.

+0

¡Esto funciona mucho mejor! – Abhinav

0

Basándose en una respuesta original, si especifica $ SHELL en lugar de bash, usará el shell preferido de los usuarios.

xterm -e "cd /etc; $SHELL" 
Cuestiones relacionadas