리눅스에서 특정 파일을 정해진 시간에 주기적으로 실행하도록 스케줄링 설정해야하는 경우가 있습니다. 이때 Crontab을 사용하면 정해진 시간에 특정한 작업을 실행시킬 수 있습니다. 쉽게 따라하실 수 있도록 Crontab에 대한 간단한 소개와 사용방법을 소개드립니다.

 

 

Crontab을 이용한 작업 스캐줄링 및 예약 방법 소개

 

Crontab은 리눅스 및 유닉스 계열 운영체제에서 사용하는 작업 스케줄링 도구입니다. 지정된 시간에 작업이 지정된 쉘 스크립트와 같은 파일을 실행하도록 예약할 수 있습니다. 

 

 

 Crontab 기본 명령어 

번호 명령어 설명
1 crontab -e Crontab 편집창 열기
2 crontab -l Crontab에 등록된 작업 보기

 먼저 Crontab 편집창을 열거나 작업내용을 확인하기위해 사용하는 명령어는 위와 같습니다. 이제 리눅스 터미널을 실행해 Crontab 편집창을 열어보겠습니다.

 

 먼저 Crontab -e를 터미널에 입력하면 편집창이 열리고, 작업 스캐줄을 설정할 수 있습니다. Crontab은 아래와 같은 형식에 따라 작업스캐줄을 설정하고 등록할 수 있습니다.

 

 

 Crontab 편집창에서 작업 스캐줄러 작성하기 

Crontab은 크게 "작업 수행 날짜/시간"과 "수행할 작업 또는 명령어" 두가지를 지정하여 원하는 작업을 스캐줄러에 등록을 하게 됩니다. 먼저 작업수행 시각은 * 별표 5개의 각 위치에 알맞은 숫자를 입력해 설정할 수 있습니다.

 

각 별표에는 항목에 맞는 범위의 숫자를 입력해 원하는 날짜/시간에 스캐줄링을 세팅할 수 있습니다.

 

예시1 - 매일 오전 6시에 backup.sh 작업을 실행하기

0 6 * * * /usr/bin/backup.sh

 

예시2 - 매주 일요일 오후 1시 30분에 cleanup.sh를 실행하기

30 13 * * 0 /usr/bin/cleanup.sh

 

예시3 - 매 15분 마다 http://example.com으로 curl 명령어 날리기

*/15 * * * * curl http://example.com

 

 

별표를 이용하지 않고, 미리 정의된 시각에 작업 스캐줄러를 등록하기

 

"@" 키워드를 이용하는 방법인데요, 별표 키워드보다는 간단하게 작성할 수 있고 시각이 아닌 미리 지정된 시점에 작업을 스캐줄링할 수 있다는 특징이 있습니다.

 

@키워드명 설명
@reboot 시스템 부팅시 실행될 명령어를 설정합니다.
@yearly 매년 11일 자정에 실행될 명령어를 설정합니다.
@monthly 매월 1일 자정에 실행될 명령어를 설정합니다.
@weekly 매주 일요일 자정에 실행될 명령어를 설정합니다.
@daily 또는 @midnight 매일 자정에 실행될 명령어를 설정합니다.
@hourly 매시간 0분에 실행될 명령어를 설정합니다.

 

예시 - @reboot

@reboot /usr/local/bin/my_script.sh

 

 

 Crontab에 등록된 작업 확인하기 

crontab -e를 통해 작업을 등록한 후 crontab -l 명령을 수행하면 스캐줄링된 작업을 아래와 같이 볼 수 있습니다.

0 * * * * /usr/local/bin/my_script1.sh
@daily /usr/local/bin/my_script2.sh
0 0 * * 0 /usr/local/bin/my_script3.sh
@hourly /usr/local/bin/my_script4.sh

 

 등록된 작업 주석처리하는 방법 

작업을 삭제해도 좋지만 이후에 사용할 수 있는 경우에는 내용을 남겨둘 필요도 있습니다. 이 때는 # 기호를 이용하여 주석처리해 작업 실행을 하지 않도록 설정할 수 있습니다.

# 0 * * * * /usr/local/bin/my_script1.sh
# @daily /usr/local/bin/my_script2.sh

 

 

 

여기까지 Crontab을 사용하여 리눅스 시스템에서 작업 스케줄링을 하는 방법에 대해서 알아보았습니다. 본문에 포함된 예시를 활용해 원하는 시간에 특정한 작업을 등록해볼 수 있습니다. 그리고 Crontab을 이용할때는 주의해야할 사항은 작업 대상 파일 또는 명령어에 권한이 있는지 또는 실행하는 사용자가 권한이 있는지 여부를 확인하는 과정이 필요합니다. 

 

 마지막으로 스캐줄링 작업은 반복해서 동작을 수행하다보니 수행하는 작업이 에러를 발생시키거나 실행으로 발생하는 로그파일등이 쌓였을때 disk full이 나서 시스템이 명령을 실행을 못하는 등의 문제들이 발생할 수 있습니다. 이를 방지하기 위해 등록 직후에 정상동작을 확인하고 또 주기적으로 스캐줄링된 작업이 문제를 발생하고 있진 않은지 확인하면 좋을 것 같습니다.

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기