¿Qué hace "w" con urandom?

¿Qué hace "w" con urandom?
> 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 el que tiene algo que ver con urandom?

> strace who 2>&1 | grep urandom
> 

Entonces, ¿por qué no se ve afectado "quién"?

Respuesta1

Desde la página de manualw(1):

wmuestra información sobre los usuarios actualmente en la máquina,y sus procesos

Para mostrar los procesos de los usuarios, revisa todos los procesos que se ejecutan en la máquina. Intentemos esto:

$ strace -o w.trace w | grep whatever

Dentro del rastro encontramos líneas como estas (en un sistema Linux):

open("/proc/8286/cmdline", O_RDONLY)    = 4
read(4, "grep\0whatever\0", 2047)       = 14

Lo que muestra wcómo revisar /procy observar explícitamente las líneas de comando de todos los procesos (y otras cosas, que no se muestran). Encuentra el grepque corre paralelo a él y eso es lo que straceve hacer. La tubería no tiene nada que ver con eso, más que iniciar ambos procesos al mismo tiempo. En cierto modo, es similar a ps | grepver el propio grep.

whoy la mayoría de los demás comandos no necesitan información sobre los procesos y no buscan, por lo que no ves lo mismo al rastrearlos.

Respuesta2

Como se explica en otras respuestas y comentarios, el motivo de lo que observa es la forma en que Bashmaneja las tuberías. Para filtrar lo que realmente desea en situaciones similares, puede intentar encerrar la primera letra del grepargumento []así:

$ strace w 2>&1 | grep random
read(4, "grep\0random\0", 2047)         = 12
$ strace w 2>&1 | grep '[r]andom'
$ strace w 2>&1 | grep '[c]lose'
close(3)                                = 0
close(3)                                = 0
close(3)                                = 0
close(3)                                = 0
close(3)                                = 0
close(3)                                = 0
(...)

EDITAR:

Como lo señala correctamenter.en elComenta abajoDe hecho, straceno ve el otro lado de la tubería. De manera similar a ps aux | grep grep lo que también se muestra grep grepen su salida, westá recorriendo /procel directorio y encuentra grepel proceso allí.

información relacionada