서버에서 자동 실행하는 crontab(크론탭) 설정 방법

| Updated

정말 서버를 운영하기 위해서 알아야 하는 게 너무 많습니다.
전문적인 서버 운영자도 아니기 때문에 어지간하면 그냥 넘어가고 싶은데 이 세계는 타협이라는 게 없습니다.

제가 가상서버호스팅(VPS)를 운영하고 있는 이상 이 쪽 동네에서 사용하는 최소한 알고 있어야하는 기초적인 지식이 아주 많습니다.
오늘 이야기하려는 크론탭(Crontab)도 마찬가지 입니다.

며칠 전 인터넷나야나가 랜섬웨어에 걸렸다는 소식에 자극받아 자동으로 dropbox로 백업하는 방법에 대해서 포스팅했는데요.

이 포스팅의 마지막 부분에 crontab(크론탭) 설정방법이 나옵니다. 이 crontab(크론탭)을 설정하는 방법은 대부분 딱 몇 줄로 소개하고 말았는데요. 솔직히 그냥 따라 하면 되는 간단한 것이므로.

그런데 이 crontab(크론탭)이 작동하지 않는 것입니다. 왜 작동하지 않을까 고민하고 이런 저런 자료를 찾아보면서 이 crontab(크론탭) 설정 방법을 조금 자세하게 정리해야 겠다는 생각이 들었습니다.

1. crontab(크론탭)이란

유닉스/리눅스 계열에서는 원하는 시간에 주기적으로 일을 시키기 위해 crontab(크론탭)을 사용합니다. 즉 cron(크론)이라는 원하는 시간에 명령(프로그램)을 내리는 데몬이 작동하도록 하는 실행 툴이라 할 수 있습니다.

이는 윈도우즈의 스케줄러와 비슷한 컨셉이라고 할 수 있습니다.

서버가 24시간 가동되고 있으므로 적절한 시간에 적절한 명령어를 주어서 자동으로 실행시킬 수 있는 툴이라고 할 수 있습니다.

예를 들어 새벽 4시에 데이타베이스를 백업 받아 줘라든지, 아침 7시에 서버의 사용량을 리포트하도록 한다든지 등등 능력이 되면 아주 편리하게 활용할 수 있는 툴이라고 합니다.

2. crontab(크론탭) 설정하는 두가지 방법

crontab(크론탭)을 설정하는 방법은 두가지 방법이 있습니다.

첫째는 제가 앞서 소개한 포스팅에서 설명한 것 처럼 crontab -e 명령어를 사용해서 등록하는 것이구요.

둘째는 /etc/crontab에 직접 등록하는 방법입니다. 이경우는 vi, nano와 같은 편집기로 crontab 파일을 열어서 직접 편집을 합니다.

이 두가지 방법은 같은듯 하면서도 조금은 다르다고 합니다.

2.1. crontab -e 명령어를 사용해 등록

그러면 crontab -e 명령어를 사용해서 등록하는 방법을 간단히 알아봅니다.

  • 먼저 터미날(shell)에서 접속합니다. 그래야 명령을 내릴 수 있으므로.
  • crontab -e 명령어 입력
  • 아마 처음으로 시스템에서 crontab -e 명령어를 사용하면 no crantab for root라는 메세지가 나오면서 편집기를 선택하하고 나옵니다.
  • 편집기는 ed, nano, vim basic, vim tiny 중에서 선택할 수 있습니다. 전는 easiest라고 쓰여진 nono편집기를 선택했습니다. 이 편집기는 GUI 편집기 특징을 어느 정도 갖추고 있어서 접근성이 좋았습니다.

▽ nginx 우분투에서 크론탭 등록시 처음 사용 할 편집기 선택 화면

nginx 우분투에서 크론탭 등록시 처음 사용 할 편집기 선택
  • 편집기안에서 명령어를 입력합니다. 30 4 * dbbackup.sh 와 같은 것
  • 저장해서 빠져나옵니다. nano 편집기에서 저장 명령어는 CTRL+O이죠.
  • 편집기를 빠져나오면 ‘crontab: installing new crontab’이라는 메세지 뜹니다. 그러면 성공한 것이죠
  • 이 명령이 등록되면 /var/spool/cron/root 경로에 파일이 생성됩니다.

▽ nginx 우분투에서 크론탭 등록 시 나노(nano) 편집 시용 모습

크론탭 등록 시 나노(nano) 편집 시용 모습

여기에서 crontab -e 명령어를 사용해 등록을 했다면 이와 관련된 다른 명령어가 있을 것입니다. crantab에는 crontab -e옵션 외 -l, -r옵션이 있는데요.

  • crontab -e : 명령을 등록, 편집 – 맨 처음에 사용 시 편집기를 선택할 수 있다.
  • crontab -d : 등록된 명령을 삭제
  • crontab -l : 현재 등록된 리스트 출력
  • crontab -l -u otheruser : otheruser 사용자가 등록한 crontab 리스트 출력
  • crontab -r : 현재 사용자가 등록한 crontab 전체 삭제

crontab -e로 크론 명령어를 등록했다면 다 끝난 후 정상적으로 등록되었는지 알기 위해 crontab -l 명령을 사용해 list-up을 해볼 수 있겠습니다.

2.2. 편집기 또는 FTP에서 직접 편집

두번째 방법은 nano, vi 편집기를 이용해 터미널(shell)에서 /etc/crontab 파일을 직접 수정하는 것입니다.

저는 주로 FTP 열어놓고 서브라임 편집기로 연결해 편집하고 있는데요. 작업을 하다보면 굳이 터미널(shell)까지 열필요없이 FTP에서만 작업 가능하기 때문에 선호합니다.

  • FTP로 연결하고
  • /etc/crontab을 편집 선택해 오픈합니다.
  • 서브라임 편집기에서 필요 내용을 입력합니다.
  • 저장, FTP에서 업데이트 선택

▽ 서브라임 텍스트 편집기에서 crontab(크론탭) 편집 모습

서브라임 텍스트 편집기에서 crontab(크론탭) 편집

그런데 이렇게 편집기로 /etc/crontab 파일을 직접 편집하는 경우 반드시 행위자가 root라는 것을 표기해 주엉 한다고 합니다.

그래서 명령어는 30 4 * root sh dbbackup.sh 와 같이 유저가 root라는 것을 명시해 주어야 합니다.

3. 크론탭 설정 규칙

1분마다 실행할 것

* * * * * doitnow.sh

동일 프로세스를 10분마다 실행

*/10 * * * * doitnow.sh

매시 15분마다 실행

15 * * * * doitnow.sh

1시간마다 실행

0 * * * * doitnow.sh

2시간마다 실행

0 */2 * * * doitnow.sh

4. 마무리

위에서 crontab(크론탭) 명령을 등록 방법 2가지를 소개했는데요.

많은 사람들이 /etc/crontab 파일을 직접 편집하는 경우 crontab(크론탭)이 제대로 작동하지 않는다고 합니다. 저도 마찬가지이구요.

그래서 가능하면 cron -e 명령어를 이용해 등록하라는 가이드가 있는 듯 합니다.

그리고 crontab(크론탭) 명령을 등록 후엔 cron을 실행하는 명령을 주는 게 좋다고 합니다.

service cron status # checks if cron is running service cron start 또는# starts it service cron stop # stops it

참고

혹시 서버를 고민하신가요?

안녕하세요?

저는 Vultr를 사용하고 있는데요. 혹 신규로 서버 구축을 고민하신다면 Vultr도 검토해 보시라고 권해드립니다.

저는 2016년부터 Vultr을 사용했는데 큰 불만없이 잘 사용하고 있습니다. 아래 사용기도 한번 보시구요.

한국과 일본 서버 중에서 리노드나 AWS도 좋은 대안이지요. Vultr도 장점이 많은 VPS이고 대안으로 검토해볼만합니다. 성능면에서 괜찮다고 생각합니다.

혹시 Vultr에 관심이 있다면 아래 리퍼럴 링크를 이용해 보세요. 신규 계정을 등록 시 10$을 받을 수 있는 제휴 링크입니다.

서울에 생긴 Vultr 서버 100$ 프로모션 안내

안녕하세요?
새로운 사이트 구축을 위한 신규 서버를 고민하신다면 , 서울 리젼이 생겨 더욱 빨라진 Vultr 서버를 Vultr 100$ 프로모션으로 이용해 보세요.

아래 프로모션 코드 링크를 통해 Vultr에서 서버 구축 후 1달 이상 사용 및 $25이상 결제 時 추가 100$을 주는 프로모션을 진행 中입니다.

아래 이미지를 클릭해 등록할 수 있습니다.

Vultr는 서울에도 리젼이 있어 매우 빠르고, 아마존 웹 서비스(AWS)보다 성능이 높으며 가장 가성비가 뛰어납니다.

거기다 사용자 UI도 좋고, 15개까지 스냅샷을 무료로 제공하기 때문에 관리하기 좋습니다. 그리고 지금 100$ 프로모션처럼 가격적인 메리트도 있습니다.

저는 2016년부터 Vultr 서버를 사용했는데요. 지금까지 잘 사용해 오고 있습니다. 아래 사용기도 참고해 보세요.

도쿄 리젼과 비교해 본 Vultr 서울 리젼 사용기

가성비가 뛰어난 Vultr 가상서버호스팅(클라우드호스팅,VPS) 사용기

Vultr 가상서버호스팅의 새상품 High Frequency 사용기

가상 서버를 운영하고픈 勇者에게 전하는 가상 서버 운영 입문 노하우 – Vultr 가상서버호스팅(VPS)를 중심으로

해외 가상서버호스팅(VPS)이 국내 호스팅보다 빠르다? – 아이비호스팅과 해외 가상서버호스팅 VULTR간 비교

사이트 운영을 위한 안내 – 웹서버 세팅에서 워드프레스 설치까지(우분투 17.10, NGINX 1.13.6, Marian DB 10.2, PHP7.2)

워드프레스 최적화를 위한 18개월간의 고민, 그 노하우를 담다.

Subscribe
Notify of
guest
5 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments

[…] 두가지 방법에 대한 자세한 설명은 차이는 서버에서 자동 실행을 가능케 해주는 crontab(크론탭) 설정 방법 을 참고하시기 바랍니다.저의 경우는 첫번째 방법은 무리없이 작동하는데 […]

[…] 두가지 방법에 대한 자세한 설명은 차이는 서버에서 자동 실행을 가능케 해주는 crontab(크론탭) 설정 방법 을 참고하시기 바랍니다.저의 경우는 첫번째 방법은 무리없이 작동하는데 […]

[…] 서버에서 자동 실행을 가능케 해주는 crontab(크론탭) 설정 방법 […]

[…] 내용은 서버에서 자동 실행을 가능케 해주는 crontab(크론탭) 설정 방법 을 토대로 보완 […]

[…] 내용은 서버에서 자동 실행을 가능케 해주는 crontab(크론탭) 설정 방법 을 토대로 보완 […]