web-dev-qa-db-fra.com

Enregistrer uniquement une sortie spécifique dans le fichier journal

J'utilise unison pour synchroniser les données avec un serveur, et j'ai récemment créé un cronjob pour cela. Le cronjob est en cours d'exécution au démarrage et enregistre la sortie dans un fichier journal. (informations supplémentaires ci-dessous).

Le problème que j'ai est que l'unisson a beaucoup de sortie, et je voudrais seulement enregistrer le résumé dans le fichier journal. Y-a-t-il un moyen de faire ça? Je n'ai pas trouvé de moyen de rendre l'unisson moins verbeux, alors j'ai pensé que la sortie pouvait être filtrée d'une manière ou d'une autre - je ne saurais tout simplement pas comment.

Merci!

Information additionnelle:

À l'heure actuelle, le fichier journal se présente comme suit:

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)

Je voudrais abandonner les lignes commençant par |, /, -, ou \ (la barre de rotation indiquant qu'un processus n'est pas encore terminé).

Plus d'informations supplémentaires:
crontab -e spectacles

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

Le sync.sh le script vérifie si le serveur est accessible localement ou à distance et exécute la commande unison appropriée. Le -batch le paramètre est ajouté pour que unison s'exécute sans intervention de l'utilisateur, et le 60 est un temps d'attente (pour s'assurer que unison ne s'exécute pas avant qu'une connexion soit disponible).

3
ElRudi

Lorsque vous appelez unison dans votre sync.sh le script l'appelle comme suit:

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

Cela supprimera (-v) toutes les lignes correspondant à l'expression régulière: toutes les lignes commençant par l'un de ces caractères: \|/-, ou complétez les lignes vides (^$).


Edit: Si vous voulez que le cronjob soit filtré, utilisez:

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