Lösung 1:
-
Nein - sie gehen zu STDOUT (wenn Sie
echo
verwenden ) oder STDERR (wenn Sieecho >&2
verwenden ). -
Ihre Skripte müssen selbst in Protokolle und/oder Syslog schreiben (Ihre Distribution könnte einige init.d enthalten Funktionen, die dort helfen könnten - fügen Sie Ihre Distribution zu Ihrer Frage hinzu).
Wenn Sie nach Protokollen suchen, suchen Sie nach tee
Befehl. Wenn Sie sich für Syslog entscheiden, sehen Sie sich logger
an . Sie können sie beliebig kombinieren.
Lösung 2:
Schreiben Sie ein Wrapper-Skript, das Ihr Skript aufruft und die Ausgabe in eine Datei umleitet
#!/bin/bash
/path/to/your/script &>/path/to/logfile
Lösung 3:
Sie könnten eine Funktion erstellen, um die Nachricht sowohl auf dem Bildschirm als auch im Syslog anzuzeigen, etwa so:
LOGGER="/usr/bin/logger -t $myScript" # check the location of logger for your system
myEcho () {
echo "$1"
$LOGGER "$1"
}
Sie könnten das auch in eine separate Datei schreiben und es mit
in Ihre Skripte einbinden#!/bin/bash
myScript=$(basename $0)
[ -r /myFunctions/myecho ] && . /myFunctions/myecho
Lösung 4:
Nachrichten von Init-Skripten werden im Allgemeinen nirgendwo erfasst. Daher müssen Sie einen Weg finden, dies selbst zu tun. Eine gute Idee ist die Verwendung von logger
um alle Ausgaben an Syslog zu senden. Dieses Beispiel sendet stdout und stderr an syslog:
exec 1> >(logger -s -t $(basename $0)) 2>&1
Ich habe es in diesem großartigen Artikel gefunden:http://urbanautomaton.com/blog/2014/09/09/redirecting-bash-script-output-to-syslog/.