Сохранить только определенный вывод в файл журнала

Я использую unison для синхронизации данных с сервером, и недавно я создал для этого cronjob. Cronjob работает при запуске и сохраняет вывод в файл журнала. (дополнительная информация ниже).

Проблема, с которой я столкнулся, состоит в том, что унисон имеет довольно много выходных данных, и я хотел бы сохранить только сводку в файл журнала. Есть ли способ сделать это? Я не нашел способа сделать унисон менее многословным, поэтому подумал, что, возможно, выходные данные можно как-то отфильтровать - я просто не знаю, как.

Спасибо!

Дополнительная информация:

В данный момент файл журнала выглядит примерно так:

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)

Я бы хотел расставить строки, начиная с с |, /, - или \ (вращающаяся черта, указывающая, что процесс еще не завершен).

Дополнительная информация:
crontab -e показывает

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

Сценарий sync.sh проверяет, доступен ли сервер локально или удаленно, и запускает соответствующую команду unison. Параметр -batch добавлен, чтобы заставить unison работать без ввода пользователя, а 60 - это время ожидания (чтобы убедиться, что unison не запускается до того, как соединение станет доступным).

3
задан 7 October 2015 в 13:30

1 ответ

Когда Вы звоните unison в Ваш sync.sh, сценарий называет его следующим образом:

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

Это удалит (-v) вся линия, которые соответствуют королевскому выражению: Вся линия, начинающаяся с одного из тех знаков: \|/-, или полные пустые линии (^$).

<час>

Редактируют : Если Вы хотите, чтобы cronjob был фильтрован, используйте:

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

Это удалит (-v) вся линия, которые соответствуют королевскому выражению: Вся линия, начинающаяся с одного из тех знаков: \|/-, или полные пустые линии (^$).

<час>

Редактируют : Если Вы хотите, чтобы cronjob был фильтрован, используйте:

@reboot /path/to/sync.sh -batch 60 2>&1 | grep -vE '^[\|/-]|^ >> /path/to/logfile
6
ответ дан 7 October 2015 в 23:30
  • 1
    тогда необходимо отметить ответ как полезный, довольный, что он помог, За Ваше здоровье! – Arduino_Sentinel 30 December 2016 в 03:22

Другие вопросы по тегам:

Похожие вопросы: