¿Cómo puedo mantener un comando que comencé desde el shell ejecutándose si salgo del shell?

12

¿Qué métodos existen para mantener un comando que se inició desde shell al ejecutarse después de cerrar sesión desde shell?

NES
fuente

Respuestas:

11
  • Para poner la aplicación en segundo plano, use &:

    command &
    
  • Si desea cerrar la terminal, y mantener la aplicación en ejecución, puede utilizar varias opciones: , y .screen Instalar pantalladtach Instalar dtachnohup

    nohup command &
    
  • La pantalla es útil ya que puede reiniciar una sesión y dtach también es divertido.

  • Mira los siguientes enlaces para más información

karthick87
fuente
¿no funciona agregar un &al final del comando?
theTuxRacer
2
@ Kaustubh-P utiliza & es a menudo un buen hábito para cerrar terminales a través del comando 'salir', sin presionar el botón X cerrar. & Hace que el comando se ejecute en el fondo, pero si el shell principal se cierra. que todavía puede forzar la salida de los programas en segundo plano.
karthick87
5

Use el comando nohup de esta manera:

nohup gedit /home/user/file.txt &
Javier Rivera
fuente
Cómo incluso eliminar nohup: ignorando la entrada y redirigiendo stderr a stdout
Amruth A
5

Un comando útil (bash?) Es disown. Lo bueno de esto es que funciona para un trabajo que ya se está ejecutando (por cierto, desconoce los trabajos, no los procesos, por lo que debe hacer ctrl-Z, bgantes de ejecutar el rechazo en su trabajo. Por ejemplo, imagínese haciendo lo siguiente:

local % ssh some.where.com
remote % verylongscript.sh

Ahora te das cuenta de que debes ir, pero no quieres que el script se elimine al salir, así que

ctrl-Z
remote % bg
remote % disown
remote % exit
local %

Ahora, encendido remote, tu script aún se está ejecutando.

Yossi Farjoun
fuente
1

yo suelo

nohup mycommand &

Por ejemplo, para abrir un servidor virtual VirtualBox, escribo lo siguiente en un shell remoto (que cierro luego):

nohup VBoxHeadless --startvm "myvm" --vrdp=off &
Ivan
fuente