![& para ejecutar un comando en segundo plano](https://rvso.com/image/154486/%26%20para%20ejecutar%20un%20comando%20en%20segundo%20plano%20.png)
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 ls
todaví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/null
evitar que se transmita al terminal:
ls -R / >/dev/null 2>&1 &
La pregunta de seguimiento es "¿Por qué aparece Exit 1
cuando verifico el estado del trabajo con jobs -l
.
Obtiene un estado de salida distinto de cero ls
porque 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>&1
de la línea de comando), probablemente habría visto errores en la terminal.