¿Cómo puedo ejecutar un comando desde la terminal sin bloquearlo?


45

Ejecuto muchos programas en Ubuntu desde la terminal, pero me gustaría poder continuar usando la terminal después de tener abierto un programa. ¿Cómo puedo poner los programas en segundo plano para no tener que abrir otra ventana?

Respuestas:


60

Hay diferentes formas de ejecutar un programa de terminal y continuar usando el terminal:

  • Puede abrir otra pestaña de terminal (haga clic con el botón derecho y luego seleccione "Abrir nueva pestaña").
  • Puede agregar &el comando que ejecuta. Tenga en cuenta que no verá la salida de texto al terminal, como mensajes de error.
  • Puede escribir Ctrl- Zy luego ejecutar bg. Esto tiene el mismo efecto que corrercommand &
  • Puede ejecutar nohup command &y luego presionar enter. (Gracias a ccpizza , vea los comentarios a continuación).

Sin embargo, presionar Alt, F2y luego ejecutar su comando desde la GUI generalmente se considera la mejor práctica, ¡no hay terminal en absoluto!

Tenga en cuenta que al usar &(no nohup), cerrar el terminal aún terminará la aplicación a menos que se ejecute disowndespués .

EDITAR: Parece que el uso nohupa veces dejará pequeños excrementos en su carpeta de inicio. Lo que normalmente se habría registrado en el terminal aparentemente se guarda en un archivo en ~ /.

~~

Una forma sencilla de ejecutar un programa en segundo plano es program-name & disown, que lo llevará a un terminal que puede cerrarse sin matar el proceso.


44
Para evitar matar el proceso secundario después de cerrar el terminal, puede iniciar su aplicación como nohup firefox&.
ccpizza

¡Guay! ¡No lo sabía (pero tras la experimentación, el terminal todavía está "bloqueado")!
WindowsEscapist

no está 'bloqueado', solo 'parece' bloqueado, si escribe enter una vez, recibirá un mensaje.
ccpizza

Ah, no me había dado cuenta antes.
WindowsEscapist

program-name & disownes una buena solución
Doctor Henry

8

Puede ejecutar el comando con un & después.

Por ejemplo:

Thunderbird y

Ver aquí para más información.


Esto sólo funciona hasta que se cierre la ventana de terminal, una vez que cierre la ventana del programa terminará
kurdtpage

6

Puede utilizar setsidpara ejecutar el programa en una nueva sesión además de &>/dev/nullpara que no reciba ningún mensaje de registro.

Entonces sería como

setsid program-name &>/dev/null


Guay. Debe mantener el proceso en ejecución cuando cierre la sesión del usuario y la sesión actual.
Mikhail Moskalev

1

Con el screencomando, puede abrir varias sesiones de terminal con una sola ventana y tocar

apt-get install screen (On Debian based Systems)

yum install screen (On RedHat based Systems)

screen (iniciar nueva pantalla)

[Your command]

Ctrl+A d para salir de la pantalla ... y así sucesivamente

https://linuxize.com/post/how-to-use-linux-screen/


0

Puede ejecutarlo en una terminal virtual como tmux(o screenescuché que ya no se mantiene)

# This ataches your terminal to a virtual terminal
tmux
run_your_command
# This detaches your virtual terminal (previous command can be running)
CTRL-b d
run_other_commands # on your terminal
# re-attach the virtual terminal to see the status of run_your_command
tmux a

tmux puede hacer mucho más, como:

  • mover su terminal virtual a otra terminal
  • comparte el terminal virtual en varios terminales (otros usuarios pueden ver lo que estás haciendo ;-))
  • dividir la "pantalla" para tener varias terminales.
  • ...

https://www.hamvocke.com/blog/a-quick-and-easy-guide-to-tmux/

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.