[gelöst] xsession-errors - doppelte Einträge filtern
[gelöst] xsession-errors - doppelte Einträge filtern
Hallo,
Meine xsession-errors wird immer mit den gleichen Meldungen zugemüllt. Um die Übersicht zu behalten möchte ich gern jede Meldung nur einmal anzeigen lassen.
Könnte man ein Script machen das Meldungen nur dann wegschreibt, wenn sie neu sind?
Meine xsession-errors wird immer mit den gleichen Meldungen zugemüllt. Um die Übersicht zu behalten möchte ich gern jede Meldung nur einmal anzeigen lassen.
Könnte man ein Script machen das Meldungen nur dann wegschreibt, wenn sie neu sind?
Zuletzt geändert von Alad am 17.02.2014 02:22:48, insgesamt 1-mal geändert.
Debian Wheezy, Openbox, A64 3000+, HD 6450
-
- Beiträge: 138
- Registriert: 31.03.2011 12:51:42
Re: xsession-errors - doppelte Einträge filtern
Du könntest die Datei einlesen, durch 'uniq' schicken und neu speichern...
Debian 7 Wheezy mit Gnome 3 auf Xeon 1230V2, Asus P8H77, 16 GB DDR3, 120 GB Samsung 830 SSD, Gigabyte GTX 660
Re: xsession-errors - doppelte Einträge filtern
Danke für den Tipp! Nach etwas herumsuchen habe ich den folgenden Befehl zusammengesetzt:
Jetzt muss ich nur noch herausfinden wie ich das automatisieren soll
edit: tee löscht die Datei ganz, daher tee -i
Code: Alles auswählen
~$ grep . .xsession-errors | uniq | awk -v n=1 '1; NR % n == 0 {print ""}' | tee -i .xsession-errors
edit: tee löscht die Datei ganz, daher tee -i
Zuletzt geändert von Alad am 14.02.2014 19:51:20, insgesamt 1-mal geändert.
Debian Wheezy, Openbox, A64 3000+, HD 6450
-
- Beiträge: 138
- Registriert: 31.03.2011 12:51:42
Re: xsession-errors - doppelte Einträge filtern
Als minütlichen / stündlichen / täglichen cronjob ?
Dann als Zeile einfügen:
Wird dann jede volle Stunde ausgeführt.
Wirst die Pfade sicher absolut machen müssen, aber sonst sollte es klappen...
Code: Alles auswählen
crontab -e
Code: Alles auswählen
0 * * * * grep . .xsession-errors | uniq | awk -v n=1 '1; NR % n == 0 {print ""}' | tee .xsession-errors
Wirst die Pfade sicher absolut machen müssen, aber sonst sollte es klappen...
Debian 7 Wheezy mit Gnome 3 auf Xeon 1230V2, Asus P8H77, 16 GB DDR3, 120 GB Samsung 830 SSD, Gigabyte GTX 660
Re: xsession-errors - doppelte Einträge filtern
Ich hab den Befehl direkt in crontab eingetragen (mit Pfaden) und es via Skript versucht, aber jedes mal ignoriert tee das -i Argument und löscht meine .xsession-errors Datei ganz. Direkt vom Terminal aus geht es aber bestens...
Debian Wheezy, Openbox, A64 3000+, HD 6450
Re: xsession-errors - doppelte Einträge filtern
Anscheinend mag tee -i das Ganze auch zu überschreiben. Nun gut, eine separate, gefilterte Datei sollte mir im Moment reichen.
Danke nochmal für die Hilfe.
Code: Alles auswählen
*/1 * * * * /bin/grep . $HOME/.xsession-errors | /usr/bin/uniq | /usr/bin/tee $HOME/.xsession-errors.filt
Debian Wheezy, Openbox, A64 3000+, HD 6450
-
- Beiträge: 287
- Registriert: 05.02.2013 19:47:41
Re: xsession-errors - doppelte Einträge filtern
Du könntest dir auch einen Alias setzen und die Original-Datei nehmen:
PS: grep . file | uniq statt uniq file sieht grausam aus
Code: Alles auswählen
alias xsv='uniq ~/.xsession-errors | less'
-der_linux_cowboy --- Besser werden! ... f*** w$$
Re: xsession-errors - doppelte Einträge filtern
Das ist ja eine ganz gute Idee.
Stimmt schon, aber leider geht uniq file hier nicht weil zwischen jedem Eintrag eine Weißlinie steht. Ich habe an sort -u gedacht, das hat auch weniger doppelte Einträge, aber verliert die richtige Reihenfolge (mit alias kann ich aber beides machen).grep . file | uniq statt uniq file sieht grausam aus
Debian Wheezy, Openbox, A64 3000+, HD 6450
Re: xsession-errors - doppelte Einträge filtern
Das ist erstaunlich, weil es eigentlich gar nicht funktionieren sollte. Sobald du irgendwo in einer Pipe aus einer Datei liest und direkt wieder zurueckschreibst, hast du spaetestens nach ein paar MB Datenverlust. Und dein Cronjob scheitert am %, sieheAlad hat geschrieben:aber jedes mal ignoriert tee das -i Argument und löscht meine .xsession-errors Datei ganz. Direkt vom Terminal aus geht es aber bestens...
Die Anwendung von awk ist erschwerter Bloedsinn, denn x%1 hat fuer alle x den Wert 0, also reduziert sich die Wirkung auf ein simplesman 5 crontab hat geschrieben:Code: Alles auswählen
Percent-signs (%) in the command, unless escaped with backslash (\), will be changed into newline charac‐ ters, and all data after the first % will be sent to the command as standard input.
Code: Alles auswählen
awk '{print; print("")}' # was dasselbe tut wie
awk '{print($0 RS)}'
Code: Alles auswählen
awk '!a[$0]++'
Damit waere das fragwuerdige grep ebenso ueberfluessig. Wenn es denn noetig waere, wuerde man das sauber als
Code: Alles auswählen
grep -v '^$'
Und dein tee ist wohl gaenzlich ueberfluessig, denn du willst nicht gleichzeitig sowohl auf das Terminal als auch in eine Datei schreiben, sondern nur in eine Datei. Falls du in die Mails vom crond schauen wuerdest, wuerde dir auffallen, dass dort der komplette Output drin landet. Verwende simpel > anstatt tee und >> anstatt tee -a.
Abschliessend wuerde ich den Cronjob
Code: Alles auswählen
0 * * * * /usr/bin/awk '!a[$0]++' <$HOME/.xsession-errors >$HOME/.xsession-errors-filtered
Gruss Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.
—Bruce Schneier
Re: xsession-errors - doppelte Einträge filtern
Da lernt man gerne wenn es einem so gut erklärt wird. Danke sehr
Debian Wheezy, Openbox, A64 3000+, HD 6450