Nur bestimmte Ausgaben in der Protokolldatei speichern

Nur bestimmte Ausgaben in der Protokolldatei speichern

Ich verwende es, unisonum Daten mit einem Server zu synchronisieren, und habe vor Kurzem einen Cronjob dafür erstellt. Der Cronjob wird beim Start ausgeführt und speichert die Ausgabe in einer Protokolldatei. (weitere Informationen unten).

Mein Problem ist, dass Unison ziemlich viel ausgibt und ich nur die Zusammenfassung in der Protokolldatei speichern möchte. Gibt es eine Möglichkeit, das zu tun? Ich habe noch keine Möglichkeit gefunden, Unison weniger ausführlich zu machen, also dachte ich, vielleicht kann man die Ausgabe irgendwie filtern – ich wüsste nur nicht wie.

Danke!

Zusätzliche Information:

Derzeit sieht die Protokolldatei folgendermaßen aus:

Contacting server...
Connected [//theserver//share/HDA_DATA/elrudi -> //thelaptop//home/elrudi]
Looking for changes
\ syncAll/Code/Aptana/T...avascript library code assist.txt

\ syncAll/Code/develope...nk/20070607 contacten (INDEX).xls

\ syncAll/Code/sourcefi...okexport/photos/10152112061815397

| syncAll/Code/Python/d...rawable-hdpi/ic_action_search.png

(... many many lines ...)

| syncAll/Work/2008_10 ...profile/StandardLastprofil_H0.xls

| syncAll/Work/2008_10 ...n/Load Profiles/Lastprofil_H0.xls

Waiting for changes from server
Reconciling changes
changed  ---->            syncAll/scriptfile1.sh 
Propagating updates
UNISON 2.40.102 started propagating changes at 12:07:31.55 on 07 Oct 2015
[BGN] Updating file syncAll/scriptfile1.sh from /home/elrudi to //theserver//share/HDA_DATA/elrudi
100%  00:00 ETA

[END] Updating file syncAll/scriptfile1.sh
100%  00:00 ETA

UNISON 2.40.102 finished propagating changes at 12:07:31.61 on 07 Oct 2015
100%  00:00 ETA

Saving synchronizer state
Synchronization complete at 12:07:36  (1 item transferred, 0 skipped, 0 failed)

Ich würde die Zeilen löschen wollen, die mit |, /, -, oder beginnen \(der sich drehende Balken, der anzeigt, dass ein Vorgang noch nicht abgeschlossen ist).

Weitere Zusatzinfos:
crontab -eShows

@reboot /home/elrudi/sync.sh -batch 60 >> /home/elrudi/.cronjobs.log 2>&1   

Das sync.shSkript prüft, ob der Server lokal oder remote erreichbar ist, und führt den entsprechenden unisonBefehl aus. Der -batchParameter wird hinzugefügt, damit unisones ohne Benutzereingabe ausgeführt wird, und es 60gibt eine Wartezeit (um sicherzustellen, unisondass es nicht ausgeführt wird, bevor eine Verbindung verfügbar ist).

Antwort1

Wenn Sie unisonIhr sync.shSkript aufrufen, rufen Sie es wie folgt auf:

unison ... 2>&1 | grep -vE '^[\|/-]|^$'

Dadurch werden alle Zeilen entfernt ( -v), die dem regulären Ausdruck entsprechen: Alle Zeilen, die mit einem dieser Zeichen beginnen: \|/-oder komplette Leerzeilen ( ^$).


Bearbeiten: Wenn Sie möchten, dass der Cronjob gefiltert wird, verwenden Sie:

@reboot /path/to/sync.sh -batch 60 2>&1 | grep -vE '^[\|/-]|^$' >> /path/to/logfile

verwandte Informationen