仅将特定输出保存到日志文件

ElR*_*udi 3 bash scripts cron unison

我正在使用unison将数据同步到服务器,我最近为此创建了一个 cronjob。cronjob 在启动时运行并将输出保存到日志文件。(以下附加信息)。

我遇到的问题是 unison 有很多输出,我只想将摘要保存到日志文件中。有没有办法做到这一点?我还没有找到一种方法来使统一变得不那么冗长,所以我想也许可以以某种方式过滤输出 - 我只是不知道如何。

谢谢!

附加信息:

现在,日志文件最终看起来像这样:

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)
Run Code Online (Sandbox Code Playgroud)

我想放弃以|, /, -, or开头的行\(指示进程尚未完成的旋转条)。

更多附加信息:
crontab -e演出

@reboot /home/elrudi/sync.sh -batch 60 >> /home/elrudi/.cronjobs.log 2>&1   
Run Code Online (Sandbox Code Playgroud)

sync.sh脚本检查服务器是本地可访问还是远程可访问,并运行相应的unison命令。该-batch参数的加入使unison无需用户输入运行,并且60是等待时间(以确保unison没有运行之前的网络连接)。

cha*_*aos 6

当你调用unison你的sync.sh脚本调用它,如下所示:

unison ... 2>&1 | grep -vE '^[\|/-]|^$'
Run Code Online (Sandbox Code Playgroud)

这将删除 ( -v) 与正则表达式匹配的所有行:所有以这些字符之一开头的行:\|/-,或完整的空行 ( ^$)。


编辑:如果要过滤 cronjob,请使用:

@reboot /path/to/sync.sh -batch 60 2>&1 | grep -vE '^[\|/-]|^$' >> /path/to/logfile
Run Code Online (Sandbox Code Playgroud)