cron의 출력을 로그 파일로 리디렉션하고 타임스탬프를 추가하려면 어떻게 해야 합니까?

cron의 출력을 로그 파일로 리디렉션하고 타임스탬프를 추가하려면 어떻게 해야 합니까?

내 Mac에 있는 대부분의 로그에는 다음과 같이 메시지가 출력되기 전의 타임스탬프가 있습니다.

Nov 14 17:55:24 - SoftRAID Driver: SoftRAID driver loaded, version 5.8.1.

저는 cron에서 실행 파일을 실행하고 있는데 메일을 사용하는 대신 모든 정보를 로그 파일에 출력하고 출력 앞의 각 줄에 타임스탬프를 추가하고 싶습니다. 나는 >>단일 파일에 추가하는 데 사용합니다.

이것은 내 크론탭입니다:

SHELL=/bin/bash
MAILTO=""
* 6-23 * * * /usr/local/bin/urlwatch >> /Users/john/cronjobs/urlwatch.log

이것이 내가 urlwatch.log에서 얻은 내용입니다.

UNCHANGED: (01)urlwatch update released (https://github.com/thp/urlwatch/releases/latest)

출력을 다음과 같이 만들려면 어떻게 해야 합니까?

Nov 14 17:55:24 - UNCHANGED: (01)urlwatch update released (https://github.com/thp/urlwatch/releases/latest)

나는 온라인에서 다양한 제안을 시도했지만 성공하지 못했습니다. 텍스트 파일로 저장하는 것이 더 쉽다면 괜찮습니다.

가까운 이것을 시도했습니다.

* 6-23 * * * (date && /usr/local/bin/urlwatch)  >> /Users/john/cronjobs/urlwatch.log

로그 파일의 출력은 다음과 같습니다.

Sun Mar 15 13:35:00 CDT 2020
UNCHANGED: (03)RansomWhere? Objective-See (https://objective-see.com/products/ransomwhere.html)
UNCHANGED: (01)urlwatch update released (https://github.com/thp/urlwatch/releases/latest)
UNCHANGED: (02)urlwatch webpage (https://thp.io/2008/urlwatch/)

답변1

가지고 있거나 얻을 수 있는 경우집에서 만든예를 들어)ts 에스tamp 유틸리티를 사용하면 다음과 같은 작업을 수행할 수 있습니다.

/usr/local/bin/urlwatch | /path/to/ts >> /Users/john/cronjobs/urlwatch.log

( /path/to/ts일반적으로 /usr/bin/tsLinux 시스템에 위치하며 OSX의 다른 위치에 위치할 수도 있음) 에서 man ts:

DESCRIPTION
       ts adds a timestamp to the beginning of each line of input.

기본이 아닌 시간 형식을 지정하려는 경우 그렇게 할 수 있지만 기호에는 %특별한 의미가 있으므로 cron이스케이프해야 한다는 점을 기억하세요. 예시 보기

여러 행 세트에 동일한 타임스탬프가 있는 것을 확인할 수 있습니다.가능한아마도 이를 생성한 프로그램이 출력을 버퍼링하고 있기 때문일 것입니다. 시스템에 unbuffer또는 유틸리티 가 있는 경우stdbuf가능한행 버퍼링은 다음과 같이 강제할 수 있습니다.

관련 정보