15 votos

Bash Prompt debajo de salida - fondo registro cola

Yo solía trabajar para una empresa que tenía una medida de shell para la gestión de uno de sus productos que se ejecuta en Linux y estoy buscando replicar una característica clave de este shell.

Todo el trabajo fue hecho por un proceso en segundo plano y la salida desde el registro muestra a todos los usuarios conectados.

El registro de la cola en el fondo de su concha, y la línea de mensaje siempre se mantienen perfectamente en la parte inferior.

Por ejemplo,

Log line 1
Log line 2
Log line 3
![ROOT@PRODUCT51-LIVE]:~/ #

La forma en que he tratado de hacer esto con bash para iniciar un desprendimiento de la cola en los usuarios .bashrc archivo, pero cuando la salida del comando se envía a la salida estándar (stdout) - viene en el prompt de bash, por ejemplo,

![ROOT@PRODUCT51-LIVE]:~/ #Log line 1
Log line 2
Log line 3

Y el usuario tiene que pulsar enter o la tecla CtrlC para una limpia línea de mensaje.

Yo soy de ideas sobre cómo hacer el símbolo de saltar siempre a la parte inferior de la salida y creo que estoy usando mal la terminología de encontrar nada en Google como estoy teniendo suerte - ¿alguien sabe cómo hacer esto con bash?

11voto

val0x00ff Puntos 1378

La respuesta es la pantalla o tmux se ha utilizado

Voy a explicar cómo se podría configurar de tal uso de pantalla

1) Instalar la pantalla utilizando apt-get install screen en Ubuntu/Debian o yum install screen RedHat y derivados.

2) screen -S shell_and_logs

3), a Continuación, presione Ctrl+un, seguido por S (capital S).
Una horizontal de la pantalla aparecerá

4) Presione Ctrl+un seguido por la FICHA
Esto dará el salto a la segunda división de la ventana.

5) Crear otra ventana en aquí para obtener el símbolo del sistema pulsando Ctrl+un suelte las teclas, a continuación, presione c

6) Usted puede cambiar el tamaño de la segunda windo pulsando Ctrl+un , a continuación, escriba :resize después de que Lines: aparecerá. Introduzca el número de líneas que desea mostrar.

7) por último, se puede cambiar entre windows Ctrl+un seguido por la FICHA

See example below

1voto

Michael Martinez Puntos 924

El siguiente hace lo que usted necesita, sin el uso de tmux o de la pantalla o de otros programas. Guarda el mensaje en la parte inferior. Reemplazar "/var/log/cron" con cualquier archivo que usted necesita:

#!/bin/bash 
L=$(tput lines)
L1=${L}
(( L1-- ))
C=$(tput cols)
tput cup ${L} 0
tail -f /var/log/cron | while read line; do 
  tput sc
  printf "\e[1;${L1}r\e[${L1};${C}f" 
  echo; echo ${line}
  printf "\e[1;${L}r" && tput rc
done

la clave para esto son la ANSI caracteres de control de la terminal. En particular el "\e[x;y" declaración en la que se establece una nueva área desplazable. Así que, como cada línea del archivo de registro es de lectura, en la línea inferior de la ventana se excluye del área desplazable, la línea del archivo de registro se inserta, a continuación, la parte inferior se agrega en.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: