GNU/Linux >> Tutoriales Linux >  >> Linux

¿Lectura continua de tubería con nombre (cat o Tail -f)?

He configurado rsyslog para registrar ciertos eventos de registro en /dev/xconsole :

*.*;cron.!=info;mail.!=info      |/dev/xconsole

/dev/xconsole es una canalización con nombre (fifo ). Si quiero ver lo que se está registrando, puedo hacer cat /dev/xconsole . Me sorprende ver que el comando cat /dev/xconsole no termina después de leer el archivo, sino que actúa como tail -f . en otras palabras, los dos comandos se comportan igual:

cat /dev/xconsole
tail -f /dev/xconsole

¿Alguien puede explicar por qué es eso?

¿Hay alguna diferencia entre los dos?

Respuesta aceptada:

cat sigue leyendo hasta que obtiene EOF. Una tubería produce EOF en la salida solo cuando obtiene EOF en la entrada. El demonio de registro está abriendo el archivo, escribiendo en él, y manteniéndolo abierto - al igual que lo hace con un archivo normal - por lo que EOF nunca se genera en la salida. cat simplemente sigue leyendo, bloqueándose cada vez que agota lo que está actualmente en la tubería.

Puedes probar esto tú mismo manualmente:

$ mkfifo test
$ cat test

Y en otra terminal:

$ cat > test
hello

Habrá salida en el otro terminal. Entonces:

world

Habrá más salida en el otro terminal. Si ahora presiona Ctrl-D en la entrada, entonces el otro cat terminará también.

En este caso, la única diferencia observable entre cat y tail -f será si el demonio de registro se termina o se reinicia:cat se detendrá permanentemente cuando se cierre el extremo de escritura de la canalización, pero tail -f continuará (reapertura del archivo) cuando se reinicie el daemon.


Linux
  1. Cómo generar una contraseña aleatoria en Linux usando /dev/random

  2. Linux:¿Diferencia entre /dev/console, /dev/tty y /dev/tty0?

  3. ¿Cómo codificar en base64 /dev/random o /dev/urandom?

  4. DD de /dev/zero a /dev/null... lo que realmente sucede

  5. RdRand de /dev/random

tty (/dev/tty) vs pts (/dev/pts) en Linux

lectura de serie desde la línea de comandos de Linux

Linux:diferencia entre /dev/console, /dev/tty y /dev/tty0

kernel:deshabilitar /dev/kmem y /dev/mem

¿Está mal vincular /dev/random a /dev/urandom en Linux?

Diferencias entre /dev/sda y /dev/sda1