Wie finde ich Fehlermeldungen in Linux-Skripten init.d / rc.d?


28

Unter Linux habe ich einige Skripte geschrieben, die beim Booten ausgeführt werden sollen, und mit den verschiedenen Installationsmethoden experimentiert. Für größere Skripte werde ich /etc/init.ddie entsprechenden /etc/rc.d/rc?.dRunlevel einfügen und verlinken . Für kleinere Skripte füge ich an /etc/rc.d/rc.local. Dieser Prozess scheint reibungslos zu verlaufen.

Jetzt habe ich eines meiner Skripte optimiert und es schlägt fehl. Ich habe verdammt viel Zeit damit, das Problem zu diagnostizieren, weil ich die Fehlerausgabe scheinbar nicht erfassen kann. Ich habe nachgesehen /var/log/messagesund mich umgesehen /var/log, kann aber nichts Nützliches finden.

Weiß jemand:

  1. Werden diese Fehlermeldungen automatisch irgendwo erfasst?
  2. Wenn nicht, wie kann ich stdout / stderr aus meinen init.d-Skripten erfassen?

Danke im Voraus.



Wenn Sie mit systemd zu einer moderneren Distribution wechseln, wird dies für Sie erledigt und Sie können Protokollnachrichten für jeden Dienst protokollieren.
Eckes

Antworten:


17
  1. Nein - sie gehen zu STDOUT (wenn Sie verwenden echo) oder STDERR (wenn Sie verwenden echo >&2).

  2. Ihre Skripte müssen eigenständig in Protokolle und / oder Syslog schreiben (Ihre Distribution enthält möglicherweise einige init.d- Funktionen, die Ihnen dabei helfen können - fügen Sie Ihre Distribution Ihrer Frage hinzu).

Wenn Sie sich für Protokolle entscheiden, suchen Sie nach dem teeBefehl. Wenn Sie sich für Syslog entscheiden, schauen Sie sich logger. Sie können sie beliebig kombinieren.



6

Sie können eine Funktion erstellen, mit der die Nachricht sowohl auf dem Bildschirm als auch in Syslog wiedergegeben wird:

LOGGER="/usr/bin/logger -t $myScript"    # check the location of logger for your system

myEcho () {
    echo "$1"
    $LOGGER "$1"
}

Sie können das auch in eine separate Datei schreiben und in Ihre Skripte einbinden

#!/bin/bash
myScript=$(basename $0)
[ -r /myFunctions/myecho ] && . /myFunctions/myecho

Danke, das ist näher an dem, wonach ich gesucht habe. Ich weiß, wie ich E / A umleiten soll, aber ich wusste nicht, wie ich den Logger aufrufen soll.
McKAMEY

Ist [ -r ... ]ein Test, um zu überprüfen, ob es existiert?
McKAMEY

Ja, überprüfen Sie, ob die Datei lesbar ist.
ott--

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.