rsyslog erfasst keine Ausgabe?

rsyslog erfasst keine Ausgabe?

Ich kann pushen / von demBefehl an rsyslog wie folgt:

ping www.superuser.com 2>&1 | logger -p user.info

Auf meinem System kann die "Live"-Ausgabe mit einem einfachen angesehen werden tail -f /var/log/messages. Sie gelangt dorthin aufgrund der entsprechenden Zeile in meinem /etc/rsyslog.config:

# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none                -/var/log/messages

Bei meinem benutzerdefinierten Programm funktioniert das allerdings nicht:

myprogram 2>&1 | logger -p user.info

Die myprogram-Binärdatei kehrt nicht sofort nach dem Aufruf zurück/wird beendet - sie läuft eine Zeit lang - und gibt ab und zu Nachrichten (mit printf) auf der Konsole aus. Sie verhält sich so, wenn ich ihre Ausgabe nicht in den Logger umleite. Korrigieren Sie mich, wenn ich falsch liege, aber dieses Verhalten ist ähnlich wie dasBefehl (zumindest wenn das Ziel erreicht ist).

Warum sehe ich dann die Ausgabe von myprogram nicht in /var/log/messages? Könnte die Ausgabe irgendwie gepuffert sein und gelangt einfach noch nicht zum Logger? Könnte es etwas anderes an der rsyslog.confKonfigurationszeile sein?

Antwort1

Es stellte sich heraus, dass es die Ausgabe vom myprogramPuffern war. Mit den erwähnten Tricksin dieser FrageMir ist schnell eine Lösung eingefallen:

script -q -c "myprogram" | logger -p user.info

verwandte Informationen