오늘은 리눅스에 있는 Crontab 에 대해서 사용하는 방법을 설명드리겠습니다.
먼저 crontab 이란 특정 시간에 주기적으로 그 명령, 스크립트 등을 실행할때 정말 많이 사용하는게 crontab 입니다. 예를 들어 백업 스크립트, 특정 Node 서버 재시작, 인증서 갱신 등 과닐자가 수동으로 명령어를 입력하여 해결할 수도 있지만, 그렇게 되며 매번 명령을 입력할때마다 서버에 접속하여 일일이 입력해줘야 하는 불편함이 생깁니다. 이럴때 crontab 을 사용하시면 됩니다.
Crontab 예시
입력 방법은 아래와 같습니다.
* * * * * *
┬ ┬ ┬ ┬ ┬ ┬
│ │ │ │ │ │
│ │ │ │ │ └ day of week (0 - 7) (0 or 7 is Sun)
│ │ │ │ └───── month (1 - 12)
│ │ │ └────────── day of month (1 - 31)
│ │ └─────────────── hour (0 - 23)
│ └──────────────────── minute (0 - 59)
└───────────────────────── second (0 - 59, OPTIONAL)
* * * * * 분 (0-59) 시 (0-23) 일 (1-31) 월 (1-12) 요일(0-7)
매 분마다 /etc/backup/backup.sh 스크립트를 실행하고 싶을땐?
* * * * * /etc/backup/backup.sh # 매 분마다 /backup.sh 스크립트 실행
반복해서 /etc/backup/backup.sh 스크립트를 실행하고 싶을땐?
10,30,50 * * * * /etc/backup/backup.sh # 매일 10분, 30분, 50분 간격으로 /backup.sh 스크립트 실행
아예 범위를 잡아서 그 시간동안 계속 실행하게 할수도 있습니다.
30-40 1 * * * /etc/backup/backup.sh # 매일 30분~40분까지 매 분마다 /backup.sh 실행
그리고 크론탭(crontab)을 사용할때는 한 줄에 한 명령어만 입력해야 합니다.
30-40 1 * * * /etc/backup/backup.sh # 잘 입력한 예 30-40 1 * * * /etc/backup/backup.sh # 잘못 입력한 예
저는 Ubuntu 20.04 LTS 서버에서 했지만 다른 리눅스에서도 사용이 가능하니 참고하시면 될 거 같습니다.
터미널을 열어 줍니다.

터미널에 sudo crontab -e 를 입력하여 크론 탭을 열어줍니다.

이렇게 어떤 에티터로 수정할건지 묻습니다. 저는 nano 편집기로 수정하겠습니다.
1번을 클릭합니다.

처음 구성 시 위와 같이 설명이 나오는데 필요없으니 깔금하게 지워주겠습니다.

저는 let’sencrypt 인증서를 사용중이라
매주 04시 5분에 let’sencrypt 인증서를 갱신하는 명령어와
매주 04시 5분에 엔진엑스 서버를 재시작 하는 명령어,
매일 2시 10분에 웹파일과 DB를 백업하는 스크립트. 이렇게 3가지를 등록시키겠습니다.

요렇게 입력하고 ctrl + s를 눌러 빠져나옵니다.
그리고 crontab을 재시작 해줍니다 (재시작 하지 않으면 등록한 명령어들이 작동하지 않습니다 반드시 등록후에 재시작 해주셔야 합니다)
sudo cron restart

위처럼 [OK] 문가가 나오면 성공한 것입니다! 이제 sudo crontabl -l 을 입력하여 재대로 등록됬는지 봅시다.

스케줄러에 정상적으로 등록된 모습입니다. 이런식으로 매주, 매일, 매달 사람이 입력할 명령어 또는 스크립트 실행을 크론탭에 등록해 놓으면 아주 편리해 질 겁니다!
참고했던 글 : 위키백과
NGINX 에서 인증서 발급, crontab 이용해서 매주 인증서 갱신 방법
댓글에 피드백, 궁금하신것 모두 환영합니다. 감사합니다!
[…] 크론탭을 이용하여 매주, 매일, 매달 자동으로 실행하게 만들기! […]