특정 출력만 로그 파일에 저장

특정 출력만 로그 파일에 저장

저는 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)

|, /, -또는 \(프로세스가 아직 완료되지 않았음을 나타내는 회전 막대) 로 시작하는 줄을 버리고 싶습니다 .

추가 정보:
crontab -e

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

스크립트 sync.sh는 서버에 로컬로 연결할 수 있는지 또는 원격으로 연결할 수 있는지 확인하고 적절한 unison명령을 실행합니다. 사용자 입력 없이 실행 -batch되도록 매개변수가 추가되었으며 , 이는 대기 시간입니다( 연결이 가능하기 전에 실행되지 않도록 하기 위해 ).unison60unison

답변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

관련 정보