¿Cómo puedo ejecutar un bucle infinito en el fondo, mientras que de continuar con la ejecución del script?
Ejemplo "script":
while true; do something_in_the_background; done
do_something_while_the_loop_goes_on_in_the_background
for 1 2 3; do somethingelse; done
exit 0
Esto (observe que &) parece bloquear todo el sistema después de un corto tiempo:
while true; do
something_in_the_background &
done
do_something_while_the_loop_goes_on_in_the_background
for 1 2 3; do somethingelse; done
exit 0

Respuestas:
Con el
&interior del bucle, comenzará un nuevo proceso en segundo plano y tan rápido como pueda hacerlo de nuevo sin esperar a que termine el primer proceso. En cambio, creo que quieres poner el bucle en segundo plano, así que pon&el bucle en sí comofuente
Las conchas Bourne anteriores no tenían
trueyfalsecomo comandos incorporados.truefue simplemente un alias en lugar de:, yfalsea algo así comolet 0.&al final de la línea de fondos el proceso de:es el comando nulo, tal como se describe por "ayuda":No effect; the command does nothing. Exit Status: Always succeeds.fuente
:significa y probablemente no sepa por qué lo ha movido&hasta el final. Además, cambiar el espacio para convertirlo en una sola línea es simplemente confuso: es un cambio que es muy visible pero no tiene importancia.Poner el sueño de, por ejemplo 0.1 o .01 segundos haría que su lazo más con tu CPU. Pero a medida que fuera puntiaguda ser Eric Renouf, el y debe estar al final del bucle, no dentro de ella.
fuente