ubuntu에서 crontab이 작동되지 않는 이슈 발생

2021. 8. 26. 17:34카테고리 없음

이슈상황

최근 서버 환경이 GCP에서 aws로 바뀌면서 서버를 새로 설정해야하는 이슈가 생겼다. 그러면서 해당 서버들의 로그들을 백업하는 스크립트를 생성 후 crontab으로 실행되게 설정을 했다.

그런데 분명 서버에 접속해서 cli로 실행 될때는 crontab이 잘 되는데 스크립트로 crontab을 배포 하면 실행이 되지 않았다.

crontab 설정 방식

1. crontab 파일과 crontab으로 실행될 스크립트를 다운받는 스크립트를 하나 생성 - install.sh 로 명명

2. crontab을 설정할 서버에서 install.sh를 실행하여 미리 만들어놓은 crontab 파일을 /var/spool/cron/crontab 에 복사

3. systemctl restart cron으로 cron.service 재시작

허나 나의 방식으로 하면 계속 되지 않았고 cron로그를 따로 빼서 관리해보니 스크립트가 실패한게 아닌 cron이 아예 안돌았다.

크론탭 설치 파일

sudo mkdir /root/cron

aws s3 cp s3://스크립트위치/crontab-file /root/cron
aws s3 cp s3://스크립트위치/스크립트1.sh /root/cron

sudo chmod +x /root/cron/스크립트1.sh

sudo mv /root/cron/crontab-file /var/spool/cron/crontabs/root

sudo systemctl restart cron

sudo rm /root/install.sh

대표적인 crontab이 안도는 이슈

1. 시간 설정이 잘못된 경우 * * * * * 의 설저이 잘못된 경우

2. 실행 스크립트를 상대경로로 적은 경우

대부분 위와 같은 이유를 말한다. 허나 난 모두 해당사항이 없었다.

원인을 찾아보니

cron[198016]: (CRON) INFO (pidfile fd = 3)
cron[198016]: (root) INSECURE MODE (mode 0600 expected) (crontabs/root)
cron[198016]: (CRON) INFO (Skipping @reboot jobs -- not system startup)

https://www.it-gundan.com/ko/cron/%EC%99%9C-crontab-%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EA%B0%80-%EC%9E%91%EB%8F%99%ED%95%98%EC%A7%80-%EC%95%8A%EC%8A%B5%EB%8B%88%EA%B9%8C/957175693/

crontab으로 파일은 설정할때 권한이 600 이었는데 나는 옮긴 후 확인하니 644였고 그래서 mode 0600 expected 에러가 발생했다.

수정 후 정상 작동 되는 크론탭 설치 파일

sudo mkdir /root/cron

aws s3 cp s3://스크립트위치/crontab-file /root/cron
aws s3 cp s3://스크립트위치/스크립트1.sh /root/cron

sudo chmod +x /root/cron/스크립트1.sh

sudo mv /root/cron/crontab-file /var/spool/cron/crontabs/root
# 이부분 추가
sudo chmod 600 /var/spool/cron/crontabs/root
sudo systemctl restart cron

sudo rm /root/install.sh

위처럼 sudo chmod 600 /var/spool/cron/crontabs/root 를 추가하니 정상작동 되었다. aws에서 이렇게 스크립트를 받아서 crontab을 관리하는 경우 에러날때 참고하세요!