본문 바로가기

프로젝트 설정/Docker

[Docker] crontab Error? 실행안됨 (feat. ubuntu)

반응형

 

도커 컨테이너로 ubuntu 기본 이미지를 사용해서 crontab을 처음에 설정할때 안되는 경우가 있다.

1. rsyslog 부재

기본적으로 ubuntu 에선 rsyslog를 가지고 로그를 찍는데 순수 ubuntu 이미지엔 이게 없을 수 있다.있는지 없는지는 다양한 방법으로 알 수 있지만 /etc/rsyslog.conf 가 없으면 없는것으로 봐도 무방한것 같다.install 해주자

apt install rsyslog
# service로 재실행
service rsyslog restart
# 직접 재실행
rsyslogd


rsyslog: unrecognized service

service rsyslog resatrt했는데 이거 뜨면 service에 등록이 안된건지 왜 그런건진 모르겠다.

 rsyslogd로 직접 실행시켜주면 잘된다.

2. postfix 부재

crontab이 돌면 시스템이 자동으로 postfix로 메일을 보낸다.

그래서 postfix가 없으면 에러가 난다. install 해주자.

apt install postfix

메일 안보냄 처리 MAILTO=""

기본적으로 crontab 파일에 mailto가 없을 경우 보내는게 기본값이다.

안보낼 경우 공백처리하면 안보낸다. crontab 문서 어딘가에 적어주자

# crontab -e
MAILTO=""


https://24hours-beginner.tistory.com/431

 

[crontab] No MTA installed, discarding output (feat. ubuntu)

ubuntu 에서 crontab 을 실행하였는데 # /var/log/syslog Jan 25 11:41:29 ubuntu cron[3024137]: (CRON) INFO (pidfile fd = 3) Jan 25 11:41:29 ubuntu cron[3024137]: (CRON) INFO (Skipping @reboot jobs -- not system startup) Jan 25 11:42:01 ubuntu CRON[30

24hours-beginner.tistory.com

 

그러고도 안된다?

시간이나 문법과 코드 자체가 틀렸을 수 있다.

일단 아래와 같은 코드가 crontab을 작성해놨다고 하였을 때

0 5 * * * tar -zcf /var/backups/home.tgz /home/ >> /home/log/logfile.log 2>&1

 

1. 실제 실행 명령만 실행시켜서 되는지 확인한다.

tar -zcf /var/backups/home.tgz /home/

2. 로그파일 작성하는곳의 권한이 있는지 확인한다.

간혹가다가 폴더가 없거나 권한이 없으면 안되므로 폴더를 만들어주면서 권한도 확인하자

3. 시간대를 확인하자

예를들어 현재 0 5 * * * 이면 5시 0분에 한번씩 실행한다는것인데

우리 도커와 서버의 시간은 다를 수 있다.

기본적으로 설정 등을 안했을 경우 utc-0 인데 한국 시간으로 적으면 시차 차이로 실행되지 않을 수 있다.

date로 현재 설정된 시간과 내가 설정한 시간이 맞는지 확인하자

 

crontab 설정

https://24hours-beginner.tistory.com/210

 

[ubuntu] 예약/반복 작업 (crontab/Shell Script) (ubuntu/Linux)

1. Shell Script 작성 (.sh) vim / vi / nano 등 본인이 편한 명령어를 통해 파일 생성 후 작성(수정) vim test.sh shell script 작성 / 저장 #!/bin/bash ############################# # testForCrontab.sh # author : ojava #################

24hours-beginner.tistory.com

 

반응형