
¿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 bash
y 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 bg
o 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 nohup
se 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