Linux 크론탭(Crontab) 사용법

리눅스

크론탭(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

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

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

Fill out this field
Fill out this field
유효한 이메일 주소를 입력해주세요.

우분투 컴퓨터 이름 Hostname 변경하는 방법
우분투 컴퓨터 이름 hostname 변경하는 방법
우분투에서 터미널을 열거나 네트워크 공유를 사용해야할 때 표시되는 컴퓨터 이름은 hostname이라고 불리며 hostname을 변경하면 우분투에 표시되는 컴퓨터 이름을 지정할 수…