Cron 작업에 출력이 없습니다.

Cron 작업에 출력이 없습니다.

다음과 같이 첫 번째 크론 작업을 예약해 보았습니다.

crontab -e

파일 상단과 내가 추가한 댓글 뒤의 첫 번째 줄에 몇 가지 댓글이 있습니다.

* * * * * date

날짜와 시간이 1분마다 출력될 것으로 예상하지만 터미널에서는 아무 일도 일어나지 않습니다. 출력이 다른 곳으로 전송됩니까, 아니면 cron 작업이 실행되고 있지 않습니까? 이 작업을 수행하는 데 필요한 팁이 있습니까?

답변1

크론 매뉴얼 페이지에서:

명령이 실행되면 모든 출력이 crontab 소유자(또는 crontab의 MAILTO 환경 변수가 있는 경우 해당 사용자)에게 메일로 전송됩니다. syslog 및 ps 출력에 표시된 것처럼 이러한 프로세스를 실행하는 cron 하위 복사본의 이름은 강제로 대문자로 표시됩니다.

따라서 시스템 또는 시스템 로그(예: /var/log/syslog)로 설정했다면 이메일을 확인하겠습니다.

편집하다서버 오류에서 (명령과 일치하도록 편집)

다음 명령은 모든 Cron 출력을 /usr/bin/logger(2>&1을 사용하여 stdout으로 변환된 stderr 포함)로 보내고, 이는 date_logging의 "레이블"과 함께 syslog로 전송됩니다. Syslog가 거기에서 이를 처리합니다. 대부분의 시스템에는 이미 로그 회전 메커니즘이 내장되어 있으므로 /var/log/mycustom.log와 같은 로그가 디스크를 채우는 것에 대해 걱정할 필요가 없습니다.

* * * * * root    /bin/date 2>&1 | /usr/bin/logger -t date_logging

답변2

OP, 내 crontab 상단, 작업 직전에 cron 형식을 상기시키는 다음 주석과 MAILTO 변수 설정이 있습니다. 모범 사례로서 모든 cron 변수는 cron 작업 정의보다 먼저 설정되어야 합니다.

# min  hrs  dayofmonth  month  dayofweek  command
# dow = 0-6 where 0 is Sunday, 6=Saturday
MAILTO=chuck

제 경우에는 chuckcron을 실행하는 머신의 로컬 사용자입니다. 전체 메일 전송 에이전트가 설정되어 있는 경우 MAILTO를 전체 이메일 주소로 설정할 수 있습니다.

[email protected]

모든 cron 출력은 MAILTO 변수를 통해 사용자에게 전송됩니다.

cron으로부터 실제로는 비어 있지 않은 "빈" 이메일을 수신하므로 주의하시기 바랍니다. 캐리지 리턴 출력을 STDOUT으로 캡처합니다! Ubuntu 메일 리더(알파인)가 숨겨진 문자를 표시하도록 하는 방법을 찾을 수 없기 때문에 추적해야 할 PITA입니다. (숨겨진 Ctrl을 표시하는 메일 리더를 갖는 것이 좋습니다.)

작업 배치/셸 파일을 테스트하는 대신 at.Enter를 사용 at TIMESPEC하고 한 줄에 하나의 명령을 사용한 다음 명령 목록 끝에 ^D를 추가할 수 있습니다. 그러나 cron 변수가 올바르게 설정되었는지 여부는 알 수 없지만 at작업이 완료되면 (작업을 실행 중인 현재 로컬 사용자에게) 이메일을 받게 됩니다.at

at now + 1 minute<ENTER>
batchfilename1<ENTER>
batchfilename2<ENTER>
^D<ENTER>

관련 정보