Ich bin ein Linux-Neuling und versuche, einen Befehl zu überwachen und ihn in eine Datei einzuloggen. Ich habe es versucht
watch -t -n 10 "(Datum '+ ZEIT:% H:% M:% S'; ps aux | grep" pattern "| wc -l)" >> logfile
und erwarte ein Ergebnis wie
TIME: 10:32:30 12
TIME: 10:32:40 18
TIME: 10:32:50 2
im Logfile gespeichert werden. Wenn jedoch die Protokolldatei nicht druckbare Zeichen in hat. Wie erhalte ich diese Art der Ausgabe vom Befehl li
ps
. Ich werde meine Antwort ändern.Dies kann
watch
auch ohne Verwendung von Skripten problemlos durchgeführt werden .watch -t -n 10 "(date '+TIME:%H:%M:%S' ; ps aux | grep "pattern" | wc -l) | tee -a logfile"
quelle
tee -a logfile
innerhalb der arg übergebenwatch
. Sehr sauber, danke.watch
ist für die Ausgabe auf einem Display gedacht. Wenn Sie einfach alle X Sekunden einen Befehl ausführen möchten, sollten Sie dafür einfach eine Verzögerungsschleife verwenden.quelle
watch ist ein ncurses-Programm und kann in einem Konsolenfenster (nicht umgeleitet) ausgeführt werden. Aus diesem Grund werden eine Reihe nicht druckbarer Zeichen erstellt (dies sind die Steuerzeichen, mit denen der Cursor verwaltet und verschoben wird, um den Bildschirm neu zu zeichnen).
Sie können versuchen, die date / grep-Befehle in ein Skript zu verschieben und dieses Skript dann von einem Cronjob aus aufzurufen.
quelle
Ok, also habe ich es in ein Skript geschrieben und habe den folgenden Code:
quelle
Ich bin auf diese Frage gestoßen, als ich versucht habe, eine bessere / protokollierte Ausgabe von zu erhalten
du -sh $data_path
. Ich habe das hier gefundene Muster "while command, do sleep" verwendet, aber ein komplexes AWK verwendet, um die gewünschte Ausgabe zu erhalten.Ich habe das eigentlich als Oneliner gemacht, weshalb es Semikolons gibt. Aber um es lesbar zu machen, habe ich es ausgebrochen. Die Ausgabe sieht folgendermaßen aus:
quelle
Hier ist ein Beispiel, das ich gerade für eine
watch
On-A-ps axf
Ausgabe mit einem Zeitstempel am unteren Rand der gesamten Ausgabe benötigt habe. Ich passe auf, wenn Apache ausfällt. Ich musstetee
für jeden Befehl die Pipe anps
und diedate
.watch 'ps axf | grep --line-buffered "[a]pache2"| tee --append logfile-apache-issue.log; date '+TIME:%H:%M:%S' | tee --append logfile-apache-issue.log'
Beispielausgabe von
tail --follow logfile-apache-issue.log
in der resultierenden Datei.quelle