Ich werde das folgende Skript ausführen:
%Vor% Aber ich möchte nicht, dass Log-Nachrichten in /var/log/messages
geschrieben werden, weil ich keine Root-Rechte habe. Stattdessen möchte ich, dass es in eine Datei in meinem Home-Verzeichnis geschrieben wird: /home/myuser/mylog
Wie soll ich den Befehl logger
oben ändern?
Ich denke, Ihre bessere Wahl wäre, den Befehl date
anstelle von logger
zu verwenden, wenn Sie nicht in die syslog-Dateien schreiben möchten (und keine privativen Zugriffsrechte haben).
Siehe " Zeitstempel vor einem Echo " für Details zur Verwendung von date
, um eine Nachricht mit einem Datum zu versehen und in eine Datei zu schreiben.
Sie erstellen eine Bash-Funktion, die wie folgt aussieht, indem Sie die% format-Zeichenfolge% co_de so anpassen, dass Sie das gewünschte Ergebnis erhalten:
%Vor%In Ihrem Bash-Skript würden Sie dann verwenden:
%Vor% Was würde folgendes in Ihre date
Datei schreiben:
Logger stellt dem Systemprotokollmodul syslog (3) eine Shell-Befehlsschnittstelle zur Verfügung.
Sie müssen Ihre Syslog-Konfiguration ändern, wenn Sie möchten, dass Dinge an anderen Orten protokolliert werden. Sie könnten zum Beispiel eine bestimmte Einrichtung einrichten, die eine Ausgabedatei in Ihrem Home-Verzeichnis hat. Dafür müsstest du root sein.
Wenn Sie logger
verwenden möchten, sodass die Nachricht sowohl in den Systemprotokollen als auch in einer Ihrer Dateien erscheint, tun Sie dies möglicherweise
da die Option -s
auf logger
auch auf stderr ausgegeben wird, die in die Datei mit 2>
Leider können Sie nicht.
Der Befehl logger
ist nur ein dünnes Frontend für den Systemlogger. Dies bedeutet, dass alles, was Sie ihm zuführen, direkt zu syslogd
geht, was dann alle Arten der Verarbeitung (wie Hinzufügen von Zeitstempel, Hostname, Priorität, Tag usw.) sowie komplexes Dispatching zu verschiedenen Outlets (verschiedene Dateien, Sockets, andere Server etc.).
Es überbrückt sogar Berechtigungsstufen. In Ihrem Beispiel könnten Sie also zum Beispiel problemlos in syslog
oder user.log
loggen, obwohl Sie diese Dateien nicht direkt ändern können.
Wenn logger
direkt in einer Datei protokolliert werden könnte, wäre es entweder so dumm wie ein einfacher Echo-Einzeiler oder müsste viele der von syslog ausgeführten Nachrichtenverarbeitungsaufgaben neu implementieren. Wie auch immer, das wäre eine schlechte Idee.
Es wäre viel besser, wenn die Standard-Syslog-Schnittstelle eine Möglichkeit hätte, einen Ad-hoc-Ausgangsparameter (wie einen Dateinamen) zusammen mit der Nachricht anzugeben, so dass man sich an benutzerdefinierten Dateien anmelden kann, ohne das System neu konfigurieren zu müssen (was normale Benutzer haben) keine Erlaubnis zu tun).