최근 수정까지 잘 작동하는 크론 작업의 문제를 해결하고 싶지만 크론 로그 파일을 찾을 수 없습니다. 어디에 있습니까?
cron
제가 설정 한 직업 cron -e
이며 함께 볼 수 있으며 cron -l
Lion과 그 전에 Snow Leopard에서 오랫동안 일한 것으로 확신합니다.
최근 수정까지 잘 작동하는 크론 작업의 문제를 해결하고 싶지만 크론 로그 파일을 찾을 수 없습니다. 어디에 있습니까?
cron
제가 설정 한 직업 cron -e
이며 함께 볼 수 있으며 cron -l
Lion과 그 전에 Snow Leopard에서 오랫동안 일한 것으로 확신합니다.
답변:
기본적으로 cron은 실행 된 작업의 출력을 기록하지 않습니다. cronjob이 실행되었다는 사실을 기록 할 수 있지만 OS X의 기본값도 아닙니다.
cronjob 실행 출력을 조사하려면 STDOUT 및 STDERR을 로그 파일로 리디렉션하도록 cronjob 라인을 수정하는 것이 좋습니다. crontab 파일에서 또는를 실행 한 후 작업을 수행 한 후 crontab -e
작업 라인에 다음과 같은 것을 추가하십시오.
0 0 * * * yourcommand >/tmp/stdout.log 2>/tmp/stderr.log
이렇게하면 STDOUT (일반적으로 인쇄 또는 반향 출력을 STDOUT으로)을 / tmp 디렉토리의 stdout.log 텍스트 파일로, STDERR을 임시 디렉토리의 stderr.log로 보내야합니다. 많은 유틸리티는 STDERR을 사용하여 프로그램의 실제 실행에 의해 생성 된 오류가 아니라 응용 프로그램 오류 일 때 특수 오류 메시지를 인쇄합니다. ( Wikipedia에서 STDERR 에 대한 자세한 내용을 읽을 수 있습니다 .)
cron
어떤 이유로 든 처음부터 작업을 실행하지 못하는 것처럼 보입니다 . 터미널에 명령을 입력하여 직접 작업을 실행하면 명령이 실행되고 로그 파일로 출력되지만 cron
실행을 기다리는 동안 아무 일도 일어나지 않으면 최소한 로그 파일이 변경되지 않을 것입니다. "또는 콘솔에 흔적이있어서 무슨 일이 일어나고 있는지 알 수 있습니다. 최근에 쉘을 bash에서 zsh로 변경했지만 이것에도 영향을 줄 수 있다고 생각하지 않습니다.
/System/Library/LaunchDaemons/com.vix.cron.plist
cron 자체를 디버깅하기 위해 Stdout / Stderr 경로로 cron plist ( )를 수정할 수 있습니다. plist launchctl unload
를 ing하고 launchctl load
ing하는 것이 충분한 지 또는 완전히 다시 시작 해야하는 경우 시스템 데몬이므로 기억이 나지 않습니다 . 나는 후자를 확실하게 제안 할 것이다.
다음을 간단하게 추가하는 것이 훨씬 쉽습니다 /etc/syslog.conf
.
cron.* /var/log/cron.log
그런 다음 syslog를 다시 시작하십시오.
sudo launchctl unload /System/Library/LaunchDaemons/com.apple.syslogd.plist
sudo launchctl load /System/Library/LaunchDaemons/com.apple.syslogd.plist
OSX 10.7.4에서 테스트 및 작업
/etc/syslog.conf
말합니다 # Note that flat file logs are now configured in /etc/asl.conf
. 해당 파일의 구문이 다르므로 로깅 구성 방법이 명확하지 않습니다.
기본적으로 "로깅"은 활성화되어 있지 않습니다. 그러나 mail
명령 을 실행하여 유용한 정보를 얻을 수 있습니다 .
mail
명령 에 대한 TL; DR : Enter 키를 눌러 메시지를 읽은 다음 q
enter 키를 눌러 종료하십시오.
cron-job 로그인을 찾을 수있었습니다.
/var/mail/{user-name}
다음은 AWS CLI 명령을 실행하기 위해 얻은 cron 작업 로그입니다.
From build@BuildServer1.local Fri Mar 2 10:00:00 2018
Return-Path: <build@BuildServer1.local>
X-Original-To: build
Delivered-To: build@BuildServer1.local
Received: by BuildServer1.local (Postfix, from userid 501)
id A7A94296CBA3; Fri, 2 Mar 2018 10:00:00 +0100 (CET)
From: build@BuildServer1.local (Cron Daemon)
To: build@BuildServer1.local
Subject: Cron <build@BuildServer1> /app/scripts/s3-sync.sh
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=build>
X-Cron-Env: <USER=build>
X-Cron-Env: <HOME=/Users/build>
Message-Id: <20180302090000.A7A94296CBA3@BuildServer1.local>
Date: Fri, 2 Mar 2018 10:00:00 +0100 (CET)
upload: ../../app/logs/debug.log to s3://**my-s3***/app/logs/debug.log
user
크론은 (나 같은) 작업을 실행할 때 밝혀졌다 /usr/local/bin
에 있지 않습니다 PATH
.
나는 시행 착오를 통해 이것을 발견하고 내가 알 수있는 간단한 것들에서 처음부터 작업을 구축하고 문제를 발견 할 때까지 점차적으로 추가했습니다.
다른 제안 및 답변 정보 :
어떤 이유로 (적어도 SnowLeopard에서 업그레이드 된 Lion을 실행하는 내 컴퓨터에서) 읽기 또는 읽기 위해 적용된 cron
plist 파일에 지정된 매개 변수를 사용 하지 않거나 Lion에서 cron이 아무 것도 쓰지 않습니다. stdout 또는 stderr에. launchd
/System/Library/LaunchDaemons/com.vix.cron.plist
그건 그렇고 http://s3tools.org/s3cmd 를 sync
백업으로 Amazon S3 버킷 이 있는 폴더에 사용합니다 (예 : 기본 DropBox).