¿Cómo ejecutar una tarea en segundo plano?

¿Cómo ejecutar una tarea en segundo plano?

¿Es posible ejecutar una tarea o script iniciado desde la terminal en segundo plano?

Respuesta1

Aquí hay varias respuestas, dependiendo de lo que desee (esta respuesta es válida en shells bashy zsh, otras pueden variar).

Si necesita ejecutar un comando en segundo plano y lo sabe antes de ejecutarlo, simplemente agregue un &al final del comando (usando sleep 60, no haga nada durante 1 minuto, como comando de ejemplo):

[romano:~] % sleep 60 &
[1] 9054
1& [romano:~] %

Si ya lo ha ejecutado, puede detenerlo con ctrl- Zy cuando el shell le indique, puede ponerlo en segundo plano con el comando bg:

1& [romano:~] % sleep 60  
^Z
[1]  + 9084 suspended  sleep 60
1z [romano:~] 20 % bg
[1]  + 9084 continued  sleep 60
1& [romano:~] % 

En ambos casos, el proceso/trabajo todavía está adjunto a su terminal; si cierras tu terminal uncolgarLa señal (HUP) se envía al proceso; la mayoría de los procesos saldrán correctamente en ese momento. Si necesita asegurarse de que el proceso continuará, puede iniciarlo con:

nohup sleep 60 & 

o, después de haberlo enviado a segundo plano con bgo con un simple &, decirle al shell que se olvide de ello, con:

disown %% 

( %%es uncontrol de trabajoacceso directo, y aquí representa el último proceso enviado en segundo plano).

Luego hay que tener en cuenta el resultado del proceso --- en los dos primeros casos el resultado seguirá llegando al terminal; en el caso de nohupse desviará a un archivo llamado nohup.out, y en el último caso (con disown) irá al terminal a menos que lo cierres, en cuyo caso el comportamiento es bastante indefinido. Es una buena práctica cuidar usted mismo el resultado de un proceso en segundo plano utilizandoredirección.

Respuesta2

agregar &al comando.

Ejemplo:

$ cp FromA ToB &

Respuesta3

Este ejemplo ejecutará actualizaciones en segundo plano:

sudo apt-get dist-upgrade -y &

Solo tenga en cuenta el singe &.
Si desea ocultar la salida estándar, haga lo siguiente:

sudo apt-get dist-upgrade -y > /dev/null &

Respuesta4

Si lo quieres más avanzado, y quieres poder usar la sesión más tarde de forma local o por SSH, puedes usar screen.

# screen
# apt-get update -y

Luego presione CTRL+ Aseguido de D.

Posteriormente podrás volver a adjuntar:

# screen -rd

información relacionada