La mayoría de los comandos se ejecutan rapidamente como lo es ls o cd , pero hay algunos que tardan bastante tiempo, por ejemplo el estar copiando archivos a otro directorio, por lo cual es necesario esperar y esperar y esperar.
En el escenario descrito, la mayoría de los usuarios optarían por terminar el proceso con ctrl + c ,pero se puede suspender utilizando ctrl + z y mandarlo a un segundo plano (background), para hacer otras tareas.
Quizas suene algo confuso pero es bastante sencillo,veamos algunos ejemplos:
--Mandar un proceso a background
--Precionamos ctrl + z, para suspenderlo
oscar@ubuntu:/proc$ teamviewer
^Z
[1]+ Detenido teamviewer
--Listamos los jobs, y veremos que esta el que acabamos de suspender
oscar@ubuntu:/proc$ jobs
[1]+ Detenido teamviewer
--Lo mandamos a backgroung para ejecutarlo
oscar@ubuntu:/proc$ bg %1
[1]+ teamviewer &
--Listando los jobs, vemos que ya no esta suspendido y que esta trabajando
oscar@ubuntu:/proc$ jobs
[1]+ Ejecutando teamviewer &
--Asi podriamos tener muchos procesos trabajando en background :
oscar@ubuntu:/proc$ jobs
[1] Ejecutando teamviewer &
[2]- Detenido gedit
[3]+ Detenido top
oscar@ubuntu:/proc$ bg %2
[2]- gedit &
oscar@ubuntu:/proc$ jobs
[1] Ejecutando teamviewer &
[2]- Ejecutando gedit &
[3]+ Detenido top
--Si deseamos MATAR un job en ejecución
oscar@ubuntu:/proc$ kill %1
oscar@ubuntu:/proc$ jobs
[1] Terminado teamviewer
[2]- Ejecutando gedit &
[3]+ Detenido top
Ahora, si analizamos vemos que se necesitan 3 pasos para poner un proceso en background, pero podemos
hacerlo solo con 1 poniendo ampersand al final de un comando, para mandarlo directamente a background:
--Mandar proceso directamente a background
proc$ gedit &
[4] 2565
--Vemos que al listarlo, ya aparece como un job
oscar@ubuntu:/proc$ jobs
[1] Ejecutando teamviewer &
[2] Ejecutando gedit &
[3]+ Detenido top
[4]- Hecho gedit
--Para regresar un proceso de backgrond a la terminal usamos "fg" con el numero del job
oscar@ubuntu:/proc$ fg %2
Nota: si cerramos la terminal o sesion , todos los jobs se finalizaran.
Para evitar esto, se utiliza el comando "nohup" de esta manera se manda el proceso a background
y queda inmune a los hangups (de ahí su nombre nohup) que es cuando se cuelga
o termina la terminal o consola de la cual se ejecutó el proceso.
oscar@ubuntu:/proc$ nohup firefox
gracias me sirvió lo estaba buscando : D
ResponderEliminar