우분투 cron 설정으로 주기적인 명령 동작시키기

서버 시간 확인

cron은 서버 시간 기준으로 동작하기 때문에 서버가 어떤 지역 기준으로 시간 설정이 되어 있는지 확인해야한다. 간단하게 date 명령을 사용할 수 있다.

$ date
Tue Jun  8 14:41:18 KST 2021

위와 같이 되어 있으면 한국 시간 기준으로 서버 시간이 설정된 걸 알 수 있다.

Time Zone 변경

Time Zone을 변경하려는 경우는 다음 명령을 사용한다.

$ sudo dpkg-reconfigure tzdata

Time Zone 변경 후 다음 명령으로도 시간을 확인할 수 있다.

$ timedatectl
                      Local time: Tue 2021-06-08 14:41:24 KST
                  Universal time: Tue 2021-06-08 05:41:24 UTC
                        RTC time: Tue 2021-06-08 05:41:24
                       Time zone: Asia/Seoul (KST, +0900)
       System clock synchronized: yes
systemd-timesyncd.service active: yes
                 RTC in local TZ: no

시간 변경이 완료되면 cron 데몬을 재실행 해주어야 한다.

sudo service cron restart

Cron 설정

우분투 리눅스의 경우 각 계정별로 cron에 스케줄을 등록하는 것이 가능하다. 사용하려는 계정에서 다음 명령을 입력한다.

$ crontab -e

이 명령을 사용하면 cron 에디터가 열린다. 해당 에디터에서 필요한 명령을 원하는 주기에 맞게 설정하면 된다.

예를들어, 매일 오전 6시 00분에 test.sh라는 명령 스크립트를 실행하려는 경우 다음과 같이 입력한다.

0 6 * * * /bin/sh /home/ubuntu/test.sh

주의할 것은 crontab -e 으로 에디터를 오픈 한 상태에서 시간을 수정하면 바로 해당 내용이 반영되진 않는다. 예를들어 cron이 잘 동작하는지 확인하기 위해 현재 시간부터 2분 후에 동작하도록 설정해도 에디터를 열고 있으면 cron 명령이 실행되지 않으므로 반드시 에디터를 종료하고 테스트 해야한다.

참고

Leave a Reply