Python 스크립트를 작성하고 다음과 같이 실행하면 정상적으로 실행되지만 python3 /path/to/file/Script.py
crontab을 통해 실행하려고 하면 예상대로 실행되지 않습니다. 내 스크립트는 파일을 다운로드하고, 구문 분석하고, 데이터를 새 텍스트 파일에 추가하고, 업데이트된 텍스트 파일을 이메일로 보내도록 되어 있습니다.
나는 사용해 보았 crontab -e
으나 sudo crontab -e
둘 다 작동하지 않았습니다. 두 crontab에서 나는 다음을 시도했습니다.
45 20 * * * python3 /path/to/file/Script.py
45 20 * * * $(which python3) /path/to/file/Script.py
45 20 * * * /usr/bin/python3 /path/to/file/Script.py
45 20 * * * /path/to/file/Script.py (after adding #!/usr/bin/env python3 at the beginning of my script)
그러나 이들 중 어느 것도 효과가 없었습니다. crontab 형식의 분과 시간을 과거 시간이 아닌 작동했던 시간으로 변경했습니다. 무슨 일인지 보려고 들어갔는데 /var/log/syslog
솔직히 무슨 일인지 이해가 안 됐어요.
로그 파일에는 다음이 표시됩니다.
Mar 23 20:49:01 G3 CRON[10843]: (g3) CMD (/home/g3/covidfiles/COVID19.py)
Mar 23 20:49:01 G3 postfix/pickup[6415]: 435D914810F1: uid=1000 from=<g3>
Mar 23 20:49:01 G3 postfix/cleanup[8157]: 435D914810F1: message-id=<20200324004901.435D914810F1@G3>
Mar 23 20:49:01 G3 postfix/qmgr[6416]: 435D914810F1: from=<g3@G3>, size=593, nrcpt=1 (queue active)
Mar 23 20:49:01 G3 postfix/pickup[6415]: 45822148041F: uid=0 from=<root>
Mar 23 20:49:01 G3 postfix/cleanup[6515]: 45822148041F: message-id=<20200324004901.45822148041F@G3>
Mar 23 20:49:01 G3 postfix/local[6519]: 435D914810F1: to=<g3@G3>, orig_to=<g3>, relay=local, delay=0.02, delays=0.01/0/0/0.01, dsn=2.0.0, status=sent (delivered to mailbox)
Mar 23 20:49:01 G3 postfix/qmgr[6416]: 45822148041F: from=<root@G3>, size=625, nrcpt=1 (queue active)
Mar 23 20:49:01 G3 postfix/qmgr[6416]: 435D914810F1: removed
Mar 23 20:49:01 G3 postfix/local[6520]: 45822148041F: to=<root@G3>, orig_to=<root>, relay=local, delay=0.03, delays=0.02/0/0/0.01, dsn=2.0.0, status=sent (delivered to mailbox)
Mar 23 20:49:01 G3 postfix/qmgr[6416]: 45822148041F: removed
Mar 23 20:49:06 G3 postfix/pickup[6415]: C98061480A77: uid=1000 from=<g3>
Mar 23 20:49:06 G3 postfix/cleanup[8157]: C98061480A77: message-id=<20200324004906.C98061480A77@G3>
Mar 23 20:49:06 G3 postfix/qmgr[6416]: C98061480A77: from=<g3@G3>, size=924, nrcpt=1 (queue active)
Mar 23 20:49:06 G3 postfix/local[6519]: C98061480A77: to=<g3@G3>, orig_to=<g3>, relay=local, delay=0.02, delays=0.01/0/0/0.01, dsn=2.0.0, status=sent (delivered to mailbox)
Mar 23 20:49:06 G3 postfix/qmgr[6416]: C98061480A77: removed
이메일이 사서함으로 전송되었다고 표시되지만 나뿐만 아니라 다른 수신자도 아무 것도 받지 못합니다. 저는 mailutils나 postfix가 설치되어 있지 않아서 설치했습니다. 그들 중 누구도 내 문제를 해결하지 못했습니다. 이건 개인 프로젝트라 앞으로 어떤 길을 택해야 할지 모르겠습니다. 이 스크립트를 매일 오후 8시(동부 표준시) 이후에 한 번씩 실행하고 싶습니다.
이것이 도움이 될지는 모르겠지만 저는 Linux Mint Cinnamon을 실행하고 텍스트 편집기를 사용하여 코드를 작성하고 있습니다.
답변1
postfix
출력에는 syslog
에서 로 전달되는 메시지가 표시됩니다. 메일 하위 시스템에 따라 /var/mail 디렉토리, 파일 또는 해당 홈 디렉토리의 하위 디렉토리에서 이메일을 찾을 수 있습니다.cron
g3
root
g3
root
~/Maildir
mail
이러한 메일 파일은 ( 또는 ) 명령을 사용하여 올바르게 읽을 수 있지만 이 경우에는 즐겨 사용하는 편집기( ) 또는 호출기( )를 사용하는 것이 쉬울 것입니다 mailx
. 여기에는 어떤 방식으로든 해석될 수 있는 메시지가 포함됩니다.vi
less
cron
왜스크립트를 실행할 수 없습니다.
출력이 포함되어 있지만 cron
스크립트가 실패한 이유를 여전히 알 수 없는 경우 런타임에 상태 메시지를 생성하도록 스크립트를 수정하세요.표준 에러대신에표준 출력)(예: 주요 변수의 값 인쇄 등)