& para ejecutar un comando en segundo plano

& para ejecutar un comando en segundo plano

cuando corro

$ ls -R / & 

aunque &(lo que supone relegar el proceso a un segundo plano) termino teniendo que pasar por toda la lista de mi sistema. presionar CTRL+C o CTRL+Z no ayuda. ¿Qué estoy haciendo mal?

Respuesta1

Cuando comienza ls -R /en segundo plano, el comando se inicia inmediatamente y el control se devuelve al shell que lo invoca (su shell interactivo). Sin embargo, el flujo de salida estándar y el flujo de error estándar lstodavía están conectados al terminal, por eso ve la salida del comando en el terminal.

En comentarioshaces una pregunta de seguimiento que muestra que sabes que puedes redirigir la salida del comando para /dev/nullevitar que se transmita al terminal:

ls -R / >/dev/null 2>&1 &

La pregunta de seguimiento es "¿Por qué aparece Exit 1cuando verifico el estado del trabajo con jobs -l.

Obtiene un estado de salida distinto de cero lsporque no se ejecutó completamente correctamente. No fue así, porque intentó hacer una lista recursiva de todos los archivos en todo el sistema y, presumiblemente, algunos de los directorios de sus sistemas no son legibles para el usuario con el que utilizó para ejecutar el comando. Si no hubiera redirigido el flujo de error estándar a /dev/null(eliminándolo 2>&1de la línea de comando), probablemente habría visto errores en la terminal.

información relacionada