journalctl - deja de seguir sin salir del localizador

10

Si lo hago:

journalctl -u my-service

luego Shift-Fa seguir mientras busca, ¿cómo hago (interrupt to abort)sin salir del buscapersonas?

Con less, normalmente solo ^C, pero si hago eso en journalctl, sale del buscapersonas completo.

MikeKusold
fuente

Respuestas:

6

Usted está utilizando lessen ese momento, pero ^ C se comporta de manera diferente debido a la forma en que fue invocada por journalctl. Las banderas que journalctl pasa para lessincluir los siguientes valores predeterminados:

 FRSXMK

De estos, creo que la opción "K" se aplica aquí:

-K o --quit-on-intr Hace que menos salga inmediatamente (con estado 2) cuando se escribe un carácter de interrupción (generalmente ^ C). Normalmente, un carácter de interrupción hace que menos detenga lo que esté haciendo y regrese a su símbolo del sistema. Tenga en cuenta que el uso de esta opción hace que sea imposible volver al símbolo del sistema desde el comando "F".

Entonces, estableciendo $ SYSTEMD_LESS en su entorno y omitiendo la opción "K" debería resolver el problema, no funcionó en mi prueba en Ubuntu 16.04:

 SYSTEMD_LESS="FRSXM"journalctl -u nginx

Sin embargo, puede obtener el comportamiento que desea para confirmar que el indicador K está relacionado al comparar el comportamiento de las siguientes variaciones:

# ^C after Shift-F does not completely quit
journalctl -u nginx | less -FRSXM

# ^C after Shift-F completely quits
journalctl -u nginx | less -FRSXMK
Mark Stosberg
fuente
Tengo el mismo problema de ajuste SYSTEMD_LESS, pero me confirmaron este no cambiar las banderas enviados a less. Puede verificarlo buscando el PID de lessy haciendo hd /proc/<pid>/environ. Busque la variable de entorno LESS. Estará allí pero vacío (normalmente está FRSXMK). También puede escribir _Kmenos en sí mismo para ver si ese indicador está configurado. Normalmente lo es. Si pasa SYSTEMD_LESS=, no lo es. Creo que el proceso de journalctl está señalando al localizador cuando llega SIGINT, por lo que lessmuere independientemente de esa configuración.
Aquí hay una prueba de concepto hacky que muestra cómo puede evitar esto: gist.github.com/chriskuehl/9ab4c74c19f2f4cb883744171335ac44
0

También acabo de experimentar esta peculiaridad molesta.
La configuración de SYSTEMD_LESShecho no funciona porque journalctl enviará un SIGTERMal localizador cuando reciba un ^ C.

Mi "solución" fue usar un alias bash como este:

alias log='SYSTEMD_COLORS=1 journalctl | less -FRSXM'

Esto anula el buscapersonas predeterminado y no sale cuando interrumpe el seguimiento.
La variable de entorno SYSTEMD_COLORSparece ser la única forma de tener colores y seguir corriendo menos después de un SIGINT.

Esto funciona en mi instalación de Debian 9.

clst
fuente
Hmm, esto dejó de seguir. Pero también lo hizo journalctl | less, podría ser un error.
clst