본문 바로가기
etc

[cron] 우분투에서 cron을 사용하여 예약 스케줄러 만들기

by 우주다람쥐 2021. 4. 12.
반응형

1. cron

sudo vi /etc/crontab

 

cron은 특정한 시간 또는 특정 주기마다 반복적인 작업을 수행하는 예약 스케줄러를 만들고 동작하게 해주는 기능이다.

 

2. crontab

cron 작업을 설정해 놓는 파일이다.

일반적으로 /etc/crontab 이렇게 저장되어 있는데, 사용하는 리눅스 OS에 따라 달라질 수도 있다.

 

3. crontab 설정 방법

sudo vi /etc/crontab

위의 명령어를 실행하면 다음과 같은 내용이 나온다.

이 중에서 # m h dom mon dow user command 이 부분을 보면 작성법이 나온다.

차례대로 보면 분 시 일 월 요일 사용자 실행명령 이런 형식으로 설정할 수 있다.

 

기본적으로 hourly, daily, weekly, monthly를 지원하고 있다.

추가로 동작시키고 싶은 파일이 있다면 가장 밑에 추가하면 된다.

 

4. /usr/sbin/anacron

command에서 해당 내용은 크론과 같이 동작하는 프로그램으로 서버가 일정 시간 중지되었을 때에도 작업이 실행되는 것을 보장하기 위한 동작이다.

 

5. cron.~ly 사용방법

cron.hourly로 사용법을 익혀보자

 

# 동작할 명령어를 작성할 파일 생성
sudo vi /etc/cron.hourly/setServerTime.sh

# 해당 파일 권한 설정
sudo chmod +x /etc/cron.hourly/setServerTime.sh

# 파일 확장자 없애기
sudo mv -v /etc/cron.hourly/setServerTime.sh /etc/cron.hourly/setServerTime

# cron 재시작
service cron restart

위의 명령어를 실행해서 파일이 생성되면 안에 이미지와 같이 작성하고 저장한다.

작성된 내용은 우분투 서버에서 서버 시간을 동기화시키는 명령어이다.

 

그리고 해당 파일의 권한을 chomd를 통해 변경해준다.

run-parts를 통해 동작시킬 때 하위 파일의 확장자가 없아야한다.

 

파일 세팅이 완료되면 cron을 재시작해준다.

 

sudo date -s "2020-04-12 12:00:00"

기본설정된 내용을 보면 17분마다 동작하도록 되어 있다.

명령어를 실행하고 17분이 지난 다음에 서버 시간 동기화가 제대로 되는지 확인한다.

(이 때 crontab에서 17을 1로 바꾸고 테스트하면 1분만에 확인할 수 있다.)

 

해당 이미지와 같이 cron.hourly가 정상 동작하는 것을 볼 수 있다.

daily, weekly, monthly 또한 동일하게 사용이 가능하다.

 

 

반응형

댓글