Estoy particularmente interesado en esto para ver la salida de los servicios de un solo disparo que se ejecutan en un temporizador. La --unit
bandera está cerca, pero concatena todas las ejecuciones del servicio juntas. La forma más obvia en la que puedo pensar sería filtrar el PID, pero eso me preocupa por la reutilización de PID / servicios que se bifurcan, y obtener el último PID es bastante inconveniente. ¿Hay algún otro identificador que corresponda a una sola ejecución de un servicio que pueda usar para filtrar los registros?
EDITAR: Me encantaría aceptar un "no" autorizado si esa es la respuesta real.
fuente
journalctl --user -u UNITFILE -f -o json-pretty
podría ser útil; Estás buscandoMESSAGE
campos en particular. Descubrí que es posible que también lo necesiteUSER_INVOCATION_ID
, y que algunos mensajes no tienen ninguna identificación de invocación adjunta, por lo que no se pueden filtrar a través de este mecanismo. No estoy seguro de por qué, tal vez mi registro está mal configurado ..No estoy seguro de qué marca de tiempo tiene más sentido, pero esto funciona para mí. Esperemos que haya una mejor manera de trabajar con las marcas de tiempo de
systemctl show
awk: no se pudo encontrar la forma de controlar el formato de las marcas de tiempo.fuente
systemctl show -p ActiveEnterTimestamp thermo.service | awk '{print $2 \" \" $3}'
" -fu thermo.service | menossystemctl show -p ActiveEnterTimestamp --value $unit
, por lo que no hay necesidad de awk extraPuede usar el indicador de arranque para obtener solo los registros de ese arranque. por ejemplo
fuente
Estos pueden ayudarte:
journalctl -u foo.service | cola -n 2
o reemplace 2 con el número esperado de líneas
journalctl -u foo.service --since = ' 2016-04-11 13:00:00 '
También puede combinarlos para obtener en primer lugar la última marca de tiempo de tiempo de ejecución, y luego usar esa marca de tiempo con el modificador --since.
fuente
Puede usar filtros de campo con Journalctl. P.ej
Obtenga una lista de todos los campos disponibles usando:
Un campo disponible es
_PID
.Puede obtener el PID de un proceso en ejecución usando
pidof
osystemctl show --property MainPID <SERVICE_NAME>
Así es como obtengo los registros del proceso actual de Kubenetes kubelet:
Ahora dime por qué Kubernetes es tan difícil de instalar :-(
fuente
journalctl -r | grep -m1 foo.service
fuente