Amazon EC2 인스턴스로 실행되는 우분투 서버 18.04에서 crontab을 작동시키는 데 문제가 있습니다.
내 파일에 다음 줄이 있습니다 /etc/crontab
.
*/15 * * * * root /bin/bash /home/ubuntu/gzip/over_time_compile_ec2.sh
하지만 작동하지 않는 것 같습니다. 실행하면 sudo service cron status
다음과 같은 결과가 나타납니다.
Feb 14 22:20:01 ip-172-31-15-110 CRON[15880]: pam_unix(cron:session): session opened for user ubuntu by (uid=0)
Feb 14 22:20:01 ip-172-31-15-110 CRON[15879]: pam_unix(cron:session): session opened for user root by (uid=0)
Feb 14 22:20:01 ip-172-31-15-110 CRON[15881]: pam_unix(cron:session): session opened for user root by (uid=0)
Feb 14 22:20:01 ip-172-31-15-110 CRON[15882]: (root) CMD (/home/ubuntu/gzip/compile_script.sh)
Feb 14 22:20:01 ip-172-31-15-110 CRON[15883]: (ubuntu) CMD (/home/ubuntu/gzip/compile_script.sh)
Feb 14 22:20:01 ip-172-31-15-110 CRON[15884]: (root) CMD (/bin/bash /home/ubuntu/gzip/over_time_compile_ec2.sh)
Feb 14 22:20:01 ip-172-31-15-110 CRON[15881]: (CRON) info (No MTA installed, discarding output)
Feb 14 22:20:01 ip-172-31-15-110 CRON[15881]: pam_unix(cron:session): session closed for user root
Feb 14 22:20:01 ip-172-31-15-110 CRON[15880]: (CRON) info (No MTA installed, discarding output)
Feb 14 22:20:01 ip-172-31-15-110 CRON[15880]: pam_unix(cron:session): session closed for user ubuntu
이 줄이 보이지만 (CRON) info (No MTA installed, discarding output)
CRON이 실패하게 해서는 안 됩니다. 그렇죠?
답변1
MTA(예: postfix 또는 유사)가 설치되어 있지 않아도 cron 작업이 실패하지는 않지만 cron이 작업 출력을 작업 소유자에게 이메일로 보낼 수 없게 됩니다.
어떤 이유로든 작업이 실패하거나 출력이 생성되는 경우 이에 대한 알림을 받지 않으며 해당 정보는 삭제됩니다.
MTA를 설치하지 않으려면 로그 파일에 대한 리디렉션 작업을 사용하십시오.
*/15 * * * * root /bin/bash /home/ubuntu/gzip/over_time_compile_ec2.sh >/tmp/job.out 2>/tmp/job.err
/tmp/job.out
이렇게 하면 표준 출력 메시지와 작업에서 생성된 진단 메시지가 모두 표시됩니다 /tmp/job.err
. 또한 두 가지 유형의 메시지를 모두 >/tmp/job.out 2>&1
.
사용하면 >
작업이 실행될 때마다 이러한 파일이 지워지고 다시 작성됩니다. 를 사용하면 >>
파일이 추가됩니다(그러나 2>&1
동일한 파일로 리디렉션하는 경우 그대로 두십시오. 2>>&1
작동하지 않습니다).
답변2
내 파일에는 over_time_compile_ec2.sh
cron이 현재 디렉토리에 있기 때문에 다른 스크립트의 경로가 있지만 그렇지 않습니다.
그래서 방금 다른 스크립트에 전체 경로를 추가했습니다.