> strace w 2>&1 | grep urandom
read(4, "/usr/bin/grep\0urandom\0", 2047) = 22
>
¿Por qué "w" necesita urandom? ¿Cómo evitar esto?
ACTUALIZAR:
> strace w 2>&1 | awk '/urandom/'
read(4, "awk\0/urandom/\0", 2047) = 14
>
Entonces, ¿es el filtrado lo que tiene que ver con el urandom?
> strace who 2>&1 | grep urandom
>
Entonces, ¿por qué no se ve afectado "quién"?

wque necesitaurandom. Es porquePiped commands run concurrently: unix.stackexchange.com/questions/37508/…urandomacceso en elwcódigo fuente.grepy tuawk. No estáwabriendo el/dev/urandomarchivo del dispositivo. Es similar aps -aux | grep grepstrace w 2>&1 | grep unicorns;-)Respuestas:
Como se explica en otras respuestas y comentarios, la razón de lo que observa es la forma en que
Bashmaneja las tuberías. Para filtrar lo que realmente quiere en situaciones similares, puede intentar encerrar la primera letra delgrepargumento de[]esta manera:EDITAR:
Como señaló correctamente R. en el comentario a continuación, de hecho
strace, no ve el otro lado de la tubería. De manera similar a lops aux | grep grepque también se muestragrep grepen su salidawes caminar a través del/procdirectorio y encuentra elgrepproceso allí.fuente
straceno (y no puede, de ninguna manera fácil) rastrear los otros comandos en la tubería de shell. Más bien,westá buscando los comandos actuales que se ejecutan en su terminal (y otros terminales), y se ejecuta en el grep como parte de su trabajo.Desde la página del manual
w(1):Para mostrar los procesos de los usuarios, pasa por todos los procesos que se ejecutan en la máquina. Intentemos esto:
Dentro de la traza encontramos líneas como estas (en un sistema Linux):
Lo que muestra
wexplícitamente pasar/procy mirar las líneas de comando de todos los procesos (y otras cosas, no se muestran). Encuentra elgrepque corre paralelo a él y eso es lo que lostraceve hacer. La tubería no tiene nada que ver con eso, aparte de iniciar ambos procesos al mismo tiempo. En cierto modo, es similar aps | grepver el grep en sí.whoy la mayoría de los otros comandos no necesitan la información sobre los procesos, y no van a buscar, por lo que no ve lo mismo al rastrearlos.fuente