Por ejemplo, cuando escribo ping 8.8.8.8 &
, ¿por qué podemos ver el proceso de ping funcionando? Y cuando escribo find / -name '*test*' &
, también se ve en el monitor.
¿Porqué es eso? ¿No está realmente en segundo plano?
Mejor respuesta
El &
indica al shell que ejecute el comando en segundo plano, es decir, se bifurca y se ejecuta en un sub-shell separado, como un trabajo, de forma asíncrona.
Tenga en cuenta que cuando coloca &
la salida:tanto stdout como stderr – seguirá estando impreso en la pantalla . Si no desea ver ningún resultado en la pantalla, redirija ambos stdout
y stderr
a un archivo por:
myscript > ~/myscript.log 2>&1 &
Por lo general, es posible que desee descartar el stderr
redirigiéndolo a /dev/null
si no le preocupa analizar los errores más adelante.
Incluso puede ejecutar comandos/scripts al mismo tiempo, en subcapas separadas. Por ejemplo;
./script1 & ./script2 & ./script3 &
Un trabajo en segundo plano se puede devolver a la línea de comandos antes de que finalice con el comando:
fg <job-number>
El job-number
se puede obtener ejecutando
jobs