Wo ist die Protokolldatei von rc.local?

52

Ich habe einige Befehle in meinem rc.local. Ich weiß, dass sie versagen. Wie kann ich eine Protokolldatei mit Nachrichten abrufen, die durch Ausführen von rc.local erstellt wurden? Wo befindet es sich?

Ich habe die Datei /var/log/boot.log überprüft. Ich weiß, dass meine Nachrichten nicht da sind, weil ich bereits weiß, was der Grund für das Scheitern ist. Aber ich möchte immer noch sicherstellen, dass aus der Protokolldatei.

Beachten Sie, dass ich das Skript nicht erneut ausführen möchte, ich könnte, aber ich möchte nicht. Ich würde lieber analysieren, was während des Startvorgangs passiert ist.

Vielen Dank für jede Hilfe.

Ubuntu 12.04 Desktop (wenn es darauf ankommt)

Wladimir
quelle

Antworten:

59

Sofern für einen Befehl keine Ausgabe oder Protokollierung konfiguriert ist, werden rc.localBefehle nirgendwo protokolliert.

Wenn Sie für bestimmte Befehle zu sehen , Protokolle, versuchen die stdout und stderr Umleitung für rc.localirgendwo können Sie überprüfen. Versuchen Sie, dies oben in Ihre /etc/rc.localDatei einzufügen:

exec 1>/tmp/rc.local.log 2>&1  # send stdout and stderr from rc.local to a log file
set -x                         # tell sh to display commands before execution

Dies erfordert jedoch ein erneutes Ausführen der rc.localDatei.

Ross
quelle
3
exec &> /tmp/rc.local.logist genug anstelle der beiden exec-Aufrufe :-)
AjayKumarBasuthkar
2
@ abu-bua: Bitte seien Sie vorsichtig, wenn Sie Bearbeitungsvorschläge überprüfen, die funktionale Änderungen einführen! &>Die Umleitung ist ein Bash-Ismus und schlägt in Dash und anderen „einfachen“ Implementierungen von /bin/shInterpreten, wie sie für verwendet werden, unbemerkt fehl rc.local.
David Foerster
bedeutet "nach oben" vor der ersten Zeile !/bin/sh -e?
Ben
12

Versuchen Sie /var/log/syslogstattdessen, die Datei auf Fehler zu überprüfen .

Sylvain Pineau
quelle
10

Mit systemd wird rc.local als Dienst angesehen, mit dem systemd Protokolle sammelt. Sie können sie überprüfen mit:

systemctl status rc.local.service

Sie können Fehler (falls vorhanden) im Serviceprotokoll anzeigen.

Amir Ohadi
quelle
2

Nachsehen in

  1. /var/log/messages
  2. /var/log/daemon

Oder verwenden Sie den Befehl dmesg

less /var/log/boot.log
less /var/log/dmesg
grep error /var/log/dmesg
grep <your expected error string> /var/log/boot.log

Oder verwenden Sie scriptoder ein anderes Tool, um ein Login zu erfassenrc.local

kirchberger
quelle