viernes, 16 de septiembre de 2011

Cerrar la terminal sin que se cierre el programa ejecutado con ella

Muchas veces si ejecutamos desde la terminal el archivo ejecutable de un programa gráfico, si una vez que se ha ejecutado el programa cerramos la terminal, también se cierra dicho programa. En este tema doy algunas soluciones para ejecutar desde la terminal el programa gráfico sin que éste se cierre después de cerrar la terminal que lo ejecutó.

1- Si queremos ejecutar desde la terminal un programa sin permisos de root, con: comando & exit : por ejemplo para ejecutar gedit con la terminal y que se cierre automáticamente la terminal, pero se mantenga abierto el programa gedit: gedit & exit. Lo dicho anteriormente es para ejecutar un programa que no requiera permisos de root


2- Si queremos ejecutar desde la terminal un programa con permisos de root (para el cual se necesita poner la contraseña de root , por ejemplo synaptic ) y queremos que se mantenga dicho programa después de cerrar la terminal, lo que tendríamos que poner en la terminal no es: sudo comando & exit, ya que con eso lo que pasa es que se cierra automáticamente la terminal sin dejar poner la contraseña y por lo tanto sin ejecutarse el programa; deberíamos poner en la terminal: gksu comando & exit , por ejemplo: gksu synaptic & exit , con lo cual se cierra automáticamente la terminal, pero se abre una ventana en la que nos pide la contraseña de root, y tras ponerla se abre el programa synaptic.

3-Si lo que quieres es ejecutar un programa con la terminal para ver en esta los posibles mensajes de error, lo dicho no sirve, ya que la terminal se autocierra sin dejar ver mensajes de error; en este caso lo que habría que hacer es:
– ejecutar el programa con la terminal ( en este caso da igual si es sin o con permisos de root, es decir se hará lo mismo si ponemos: comando, o gksu comando , sin: & exit)
– una vez abierto el programa, y leído los mensajes que hayan salido en la terminal, poner el cursor del ratón sobre la terminal, para que esta sea el proceso activo, y teclear:
teclas: ctrl+z ( con lo que volverá al prompt )
comando: bg
tecla: intro
comando: disown
tecla intro
y por último teclas Mayusc+Ctrl+Q para cerrar la terminal
Con todo ello el programa permanecerá abierto pero habremos cerrado la terminal desde la que se ejecuto el programa.

------------------------------------

Añadido 02-06-2011 :


Creo que con esta linea de comando mas o menos “universal” se puede solucionar todos los casos:
nohup gksu comando & exit

si el comando no requiere permisos de root no ponemos gksu
si no queremos que se autocierre la terminal, no ponemos & exit; y una vez leido el mensaje que salga en la terminal la podemos cerrar bien con el ratón o con la combinación Mayusc+Ctrl+Q


-------------------------------------

Añadido (2-12-2011 ) :

He encontrado un comando (screen ) que sirve para los tres casos, por lo que es mas fácil de recordar su uso :

screen comando por ejemplo: screen gedit : abre gedit, y podemos cerrar la terminal sin que se cierre gedit

screen sudo comando por ejemplo: screen sudo synaptic : nos pide la contraseña, luego abre synaptic, e igualmente podemos cerrar la terminal sin que se cierre synaptic

En ambos casos mientras se ejecuta el programa podemos ir viendo mensajes de error, si los hubiera, en la terminal.

Se puede usar de la misma forma el comando byobu ( byobu gedit ; byobu sudo synaptic )

( Obviamente hay que tener instalados los paquete screen y/o byobu )

------------------------------------------------------------------------

No hay comentarios:

Publicar un comentario en la entrada

A la vez que haces un comentario, por favor da una puntuación al tema: malo, normal, bueno o muy bueno.
Gracias.