GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Daemontools Multilog verliert Informationen zur Protokollzeilenzeit. Wie man es repariert?

Ich verwende Daemontools, um einen Prozess und sein Ausgabeprotokoll zu überwachen. Ich verwende Multilog, um die Protokolle auf die Festplatte zu schreiben.

Das Ausführungsskript für das Protokoll lautet:

#!/bin/bash
PATH=/usr/local/bin:/usr/bin:/bin
cd /usr/local/script_dir
exec multilog t s16777215 n50 '!tai64nlocal' '!/bin/gzip' /var/log/script_log

Der überwachte Prozess schreibt auch Ausgaben auf stderr. Im Ausführungsskript für den Prozess gibt es also die folgenden Zeilen, um stderr nach stdout umzuleiten:

exec 2>&1
exec ./my_process

Beim Tailing der Protokolldatei sehe ich jedoch Hunderte von Ausgabezeilen in Bursts (der überwachte Prozess schreibt die Ausgabe alle paar Sekunden), und der Zeitstempel in den Protokollzeilen unterscheidet sich in Sub-Mikrosekunden-Ebenen. Ich weiß aus der Art des Prozesses, dass der Zeitunterschied zwischen den Protokollzeilen nicht so gering ist. Multilog puffert eindeutig die Ausgabe und fügt dann den Zeitstempel hinzu, wenn es bereit ist, in die Datei zu schreiben. Ich möchte, dass die Zeitstempel den Zeitpunkt, zu dem die Zeile ausgegeben wurde, genauer widerspiegeln. Wie kann das behoben werden?

Akzeptierte Antwort:

Das überwachte Skript war ein Python-Skript. Um alle Standard-Streams ungepuffert zu machen, habe ich herausgefunden, dass man einfach den -u übergeben kann Option für den Dolmetscher. Dies löste das Problem in meinem Fall.


Linux
  1. Wie ändere ich die Ausgabeumleitung eines laufenden Prozesses?

  2. Verarbeiten Sie jede Ausgabezeile von „ping“ sofort in der Pipeline?

  3. Wie behebt man den Ruhezustand?

  4. Crontab-Protokoll:So protokollieren Sie die Ausgabe meines Cron-Skripts

  5. Wie extrahiere ich die Dauer aus der ffmpeg-Ausgabe?

So zeigen Sie Prozessinformationen mit Procs unter Linux an

So beheben Sie die grüne Linie unten in VLC unter Linux

So finden Sie CPU-Informationen in Linux über die Befehlszeile

Wie bekomme ich nur alle laufenden Prozess-IDs?

Wie behebt man ein nicht reagierendes Ubuntu-System?

Wie protokolliere ich die CPU-Nutzung pro Prozess?