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.d
die entsprechenden /etc/rc.d/rc?.d
Runlevel 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/messages
und mich umgesehen /var/log
, kann aber nichts Nützliches finden.
Weiß jemand:
- Werden diese Fehlermeldungen automatisch irgendwo erfasst?
- Wenn nicht, wie kann ich stdout / stderr aus meinen init.d-Skripten erfassen?
Danke im Voraus.
Antworten:
Nein - sie gehen zu STDOUT (wenn Sie verwenden
echo
) oder STDERR (wenn Sie verwendenecho >&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
tee
Befehl. Wenn Sie sich für Syslog entscheiden, schauen Sie sichlogger
. Sie können sie beliebig kombinieren.quelle
Schreiben Sie ein Wrapper-Skript, das Ihr Skript aufruft und die Ausgabe in eine Datei umleitet
quelle
Sie können eine Funktion erstellen, mit der die Nachricht sowohl auf dem Bildschirm als auch in Syslog wiedergegeben wird:
Sie können das auch in eine separate Datei schreiben und in Ihre Skripte einbinden
quelle
[ -r ... ]
ein Test, um zu überprüfen, ob es existiert?Nachrichten von Init-Skripten werden im Allgemeinen nirgendwo erfasst. Daher müssen Sie eine Möglichkeit implementieren, dies selbst zu tun. Eine gute Idee ist
logger
, alle Ausgaben an Syslog zu senden. In diesem Beispiel werden stdout und stderr an syslog gesendet:Ich fand es in diesem tollen Artikel: http://urbanautomaton.com/blog/2014/09/09/redirecting-bash-script-output-to-syslog/ .
quelle