Linux 크론탭(Crontab) 사용법

발행 :
by PG
Photo of author

크론탭(Crontab)은 리눅스에서 정해진 시간에 스크립트나 데몬 등을 실행하는 스케줄러(Scheduler) 기능입니다.

특정 시간, 요일에 특정한 작업을 실행해야 하거나 반복 작업을 할 때, 예약된 시간에 특정 기능이 실행되어야 할 때 사용하는 자동화 시스템인 것인데요.

크론탭에서 스케줄을 알맞게 등록하면 리눅스를 관리할 때 수고를 덜 수 있고 특정 알림과 Log를 관리할 때 기본적으로 활용됩니다.

크론탭 기본 사용법

크론탭을 사용하기 위해서는 root 또는 superuser 권한을 얻어야 합니다.

크론탭 편집 명령어

Crontab 설정 화면
crontab -e

크론탭은 편집 화면에서 스케줄에 등록할 스크립트 또는 실행 파일과 동작할 시간을 작성해서 사용합니다.

크론탭을 설정하는 파일이 따로 있지 않고 위 명령어를 실행하면 vi 에디터 화면이 뜨는데, 여기서 크론 탭을 편집한 다음 :wq 명령어로 크론탭 설정을 저장합니다.

크론탭 목록 조회 명령어

crontab -l

편집 없이 크론탭에 작성된 내용을 조회하려면 위 명령어를 입력합니다. 그러면 cat 명령어처럼 크론탭에 등록된 목록이 프롬프트에 출력됩니다.

크론탭 삭제 명령어

crontab -r

리눅스에서 크론탭 파일 위치는 /var/spool/cron/crontabs 하위에 root 계정으로 생성된 파일로 저장됩니다. 하지만 시스템에 의해서 보호되기 때문에 root가 아니면 rm 명령어로는 삭제가 불가능합니다.

크론탭 삭제를 할 이유가 거의 없지만 전체 작업을 한번에 삭제 해야 한다면 위 명령어를 이용해 삭제할 수 있습니다.

크론탭 시간 설정

*         *         *          *          *           스크립트 경로
분(0~59)  시(0-23)  일(1~31)   월(1~12)    요일(0~7)   /root/script.sh

크론탭은 별 5개로 크론탭이 실행될 시간을 설정하게 됩니다. 위 설명은 가독성을 위해 간격을 많이 띄웠지만 실제로 크롭탭에 작성하는 예제는 다음과 같습니다.

등록한 명령어 또는 스크립트가 정확한 분,시,일,월,요일에 실행되길 원한다면 숫자로 지정할 수 있으며 *로 지정하면 매번 실행됩니다.

요일은 0,7은 일요일이며 1은 월요일, 6은 토요일입니다.

0 7 * * 0 /usr/bin/letsencrypt renew >> /var/log/letsencrypt-renew.log

위 예제는 매일 7시 정각에 실행되는 스크립트로 일, 월, 요일이 *로 설정되어 있어서 매일 실행됩니다.

* * * * * /root/script.sh

위 예제는 script.sh 스크립트가 매 분에 실행됩니다.

반복 실행

0,30 1,13 * * * /root/script.sh

오전,오후 1시 정각, 30분에 걸쳐 실행하는 스크립트

간격 실행

0-10 20-23 * * 1-3 /root/script.sh

월요일에서 수요일, 20시에서 23시, 정각에서 10분 사이에 스크립트 실행

크론탭 시간 확인

date '+%F  %r'

크론탭은 리눅스 시스템의 시간을 기준으로 동작하며 위 명령어로 시스템 시간을 확인할 수 있습니다.

크론탭 실행 테스트

크론탭의 시간을 설정했을 때 bad hour errors in crontab file 오류가 발생하거나 시간을 지정하는 것이 익숙하지 않은 사용자는 위 사이트에서 크론탭 문법을 미리 테스트해볼 수 있습니다.

크론탭 실행 명령어

크론탭 시작

service cron start

크론탭 중지

service scon stop

크론탭 재시작

우분투 : service cron restart
CentOS : service crond restart

크론탭 수정 후 수정된 내용을 적용하기 위해서 크론을 재시작 할 필요는 없습니다.

크론탭 작동 상태 확인

service scon status

크론이 작동 중인지 확인할 때 사용합니다.

크론탭 테스트

* * * * * env > /tmp/env.output

크론탭이 잘 작동하는지 테스트하기 위해서 위 스케줄을 크론탭에 등록합니다. 그리고 1분 후에 아래 명령어를 입력했을 때 내용이 출력되면 크론이 잘 작동하는지 테스트가 완료됩니다.

cat /tmp/env.output

SHELL=/bin/bash
PWD=/home/dlit
LOGNAME=dlit
HOME=/home/dlit
LANG=en_US.UTF-8
SHLVL=1
PATH=/usr/bin:/bin
_=/usr/bin/env

크론탭 로그 생성 및 확인

크론에 등록한 스크립트가 제대로 작동했는지 기록하기 위해서 로그를 남길 수 있습니다.

* * * * * /root/script.sh >> /var/log/crontab/run.log 2>&1

/root/script.sh 스크립트가 실행되면 출력된 결과가 /var/log/crontab/run.log에 로그 파일로 저장됩니다.

크론탭 백업

크론으로 다양한 작업을 저장했을 때 다른 서버에서 사용하거나 혹시 모를 상황에 대비하려면 백업을 하는게 좋습니다.

crontab -l > /home/crontab.bak

크론탭을 파일로 저장하는 명령어로 해당 파일을 저장해 뒀다가 크론탭을 실수로 삭제했거나 초기화 후 다시 세팅할 때 사용할 수 있습니다.

Leave a Comment