Tengo una salida de terminal que me gustaría que estuviera disponible para varios usuarios.
actualmente algo como:
command > /var/logs
para la entrada, y:
watch tail -30 /var/logs
para los terminales de entrada.
sin embargo, esto no es deseable porque solo ve las encuestas en lugar de generarlas cuando hay actualizaciones y la cola no permite el desplazamiento hacia atrás.
Respuesta1
Dos problemas que planteas:
ver solo encuestas en lugar de mostrarlas cuando haya actualizaciones
tail -f
no encuesta. A partir de la versión 7.5 de GNU Coreutils, tail -f
se utilizará la inotify
interfaz del kernel de Linux para recibir señales del kernel que indiquen que el archivo ha sido modificado. Si no usa GNU Coreutils, o usa una versión anterior a 7.5 por algún motivo, realizará una encuesta una vez por segundo. Probablemente también realice encuestas en sistemas operativos POSIX que no sean Linux (BSD, Solaris, etc.), pero habría que investigarlo caso por caso: algunos de estos sistemas operativos usan GNU Coreutils pero el kernel no es compatible inotify
; algunos de ellos no utilizan GNU Coreutils para implementar tail
nada.
la cola no permite desplazarse hacia atrás
El less
comando está diseñado específicamente para almacenar datos desde stdin
(por ejemplo, desde el tail
comando) y permitirle desplazarse hacia adelante y hacia atrás. El búfer no es ilimitado, pero puede usar opciones de línea de comando para aumentar o disminuir el búfer, así como modificar la longitud del búfer para el desplazamiento hacia atrás y hacia adelante.
Entonces algo como, tal vez,
tail -f /var/logs | less
le permitiría mantener un búfer de desplazamiento hacia atrás de los registros sin sondear ( tail
simplemente permanece inactivo sin consumir CPU hasta que el núcleo le envía una señal informándole que el archivo ha sido modificado).
Si necesita que varios usuarios puedan leer desde el mismo búfer, puede ejecutarlo tail -f /var/logs
dentro de una screen
sesión. Mi respuesta original no tuvo en cuenta que desea ejecutar esto para que varios usuarios puedan ver los mismos datos de registro al mismo tiempo. @Let_Me_Be lo mencionó screen
y luego se me ocurrió que probablemente esa sea su mejor opción.
Entonces, juntando mi solución y la solución de @Let_Me_Be:
screen -mdS logview -- tail -f /var/logs
Advertencia: no probado. Edítelo si está mal. Pero creo que estamos cerca de encontrar una solución adecuada.
Ahora sólo falta tener screen
en modo multiusuario. Esto es un poco complicado, así que dejaréesteEl sitio habla por sí solo. Lo esencial es que debes agregarlo multiuser on
a tu ~/.screenrc
archivo. Vea también elProblemas comunesen la parte inferior de ese enlace.
Ahora, para que los usuarios vean el registro:
screen -rS logview
Deberías hacerlo.
Respuesta2
Quieres un programa como screen
o tmux
.