[Linux] Crontab 설정 및 로그 - 스케줄링하기

2021. 5. 4. 11:44 OS/Linux

 

Crontab 설정 및 로그 - 스케줄링하기

들어가며

  우리가 프로그래밍을 하다보면 주기적으로 실행을 해야할때가 있다. 예를들면 이 스크립트를 매일 아침 7시에 실행해줘, 아니면 1시간 간격으로 실행이 필요할 때가 있다. 물론 프로그램 상에서 구현을 하면 되지만, 그렇게 되면 항상 프로세스를 띄워놓아야 하는 단점이 있다. 그렇다면 리눅스에 있는 스케줄 관리를 해줄 수 있는 놈이 있다면 얼마나 좋을까? 그게 바로 Crontab이다. Crontab은 Linux에서 제공하는 스케줄러의 역할로서, 우리가 설정해 놓은 쉘 명령을 일정/주기에 따라 실행해주는 서비스라고 생각하면 된다. 우리가 사전에 crontab에 시간과 실행해야할 커맨드를 입력해 놓으면 알아서 실행을 해준다. 얼마나 편한가? 그럼 설정하는 방법과 로그를 확인하는 방법에 대해서 설명하겠다. 

 

등록된 crontab 목록 확인

$ crontab -l

 

crontab에  등록/수정

$ crontab -e
분(0-59) 시(0-23) 일(0-31) 월(1-12) 요일(0-7) 명령어 
(요일에서 0, 7 : 일요일, 1:월, 2:화 ...)
주석은 #으로 하면 됩니다.

ex) 
30 4,12 * * * /user/bin/run.sh > /dev/null 2>&1
(새벽 4시, 낮 12시 30분에 *일, *월, *요일에 /user/bin/run.sh를 실행시켜주세요.)

*/10 * * * * /user/bin/run.sh > /dev/null 2 >&1
(10분마다 /user/bin/run.sh를 실행시켜주세요.)

  등록한 crontab 항목을 실행 하지 않기 위해서는 앞에 #을 붙여 주석 처리 해주면 됩니다. *은 모든 경우를 뜻합니다. /dev/null 2&1은 처리/에러 결과를 출력하지 않고 모두 버린다는 의미고, 만약 처리/에러 결과를 보고 싶으면 /user/bin/run.sh > result.txt 하시면 됩니다.

  crontab을 등록을 했다면 내가 등록한 쉘 명령어가 일정 주기에 따라 제대로 실행되는지 확인이 필요합니다. 확인하기 위해서는 리눅스에서 로그가 있는 경로의 cron을 보시면 됩니다. 그 외에 editor를 수정하거나 각종 crontab에 대한 설정을 변경하기 위해서는 아래와 같이 입력하시면 됩니다.

 

crontab 로그를 확인

$ cat /var/log/cron 

 

crontab 설정을 확인

$ cat /var/spool/cron/root