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 지금에스tammp 유틸리티를 사용하면 다음과 같은 작업을 수행할 수 있습니다.

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

( /path/to/ts일반적으로 Linux 시스템에 있으며 /usr/bin/tsOSX에서는 다른 위치에 있을 수 있습니다). 에서 man ts:

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

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

라인 그룹에 동일한 타임스탬프가 부여되는 것을 볼 수 있습니다.5월이는 이를 생성하는 프로그램이 출력을 버퍼링하고 있기 때문입니다. 시스템에서 unbuffer또는 유틸리티를 사용할 수 있는 경우stdbuf5월여기에 설명된 대로 라인 버퍼링을 적용할 수 있습니다.

관련 정보