cron crontab 기본 사용방법

운영 체제 별로 다양한 자동화 도구들이 존재하지만, macOS와 Linux와 같은 UNIX 계열의 운영체제에서는 cron이라는 강력한 시스템 도구를 사용하여 일정에 따라 동작하는 자동화 작업을 설정하고 관리할 수 있습니다. 이를 통해 일상적이거나 반복적인 작업을 자동화하고, 시스템 유지 관리를 보다 효율적으로 수행할 수 있습니다.

cron 및 crontab을 활용하는 방법은 매우 간단하지만 막상 사용하기 시작할 때는 몇 가지 중요한 사항을 이해해야 합니다. 이 글에서는 cron 및 crontab의 기본 사용 방법과 중요한 내용을 소개하겠습니다. 이해하면 운영 체제에서 다양한 자동화 작업을 구성할 수 있으며, 작업 스케줄링을 더욱 효율적으로 관리할 수 있게 될 것입니다.

아래 설명은 iboxcomein.com 에서 테스트 및 검증 후 작성 된 내용이지만 이것이 본문의 내용의 정확성이나 신뢰성에 대해 보증을 하는 것은 아니니 단순 하게 참고용으로 확인바랍니다.

튜토리얼 환경: Ubuntu 22.04

cron

cron은 Unix 및 Unix 계열 운영 체제에서 주기적인 작업을 예약하고 실행하기 위한 스케줄링 시스템입니다. 시스템 레벨에서 백그라운드로 실행되며, 주기적으로 명령어 또는 스크립트를 실행합니다.

cron은 운영 체제에서 자동화된 작업을 예약하고 실행하는 데 필수적인 도구 중 하나이며, 시스템 관리와 작업 스케줄링을 효율적으로 수행하는 데 사용됩니다. 이를 통해 시스템 관리자와 개발자는 반복적이거나 예약된 작업을 간편하게 자동화하고, 시스템의 안정성과 효율성을 향상시킬 수 있으며 다음과 같은 특징이 있습니다.

  • 시간 기반 스케줄링: cron은 시간과 날짜를 기반으로 작업을 예약합니다. 이를 통해 정확한 실행 시간을 지정할 수 있어 매일, 매주, 또는 특정 날짜와 시간에 작업을 실행할 수 있습니다.
  • 사용자별 스케줄링: 각 사용자는 자신의 crontab 파일을 통해 개별적인 작업을 예약하고 관리할 수 있습니다. 이로 인해 여러 사용자가 동시에 자신의 작업을 관리할 수 있으며, 작업 간 충돌을 방지할 수 있습니다.
  • 다양한 주기 지원: cron은 다양한 주기를 지원합니다. 분, 시간, 일, 월, 요일 등의 주기를 설정하여 작업을 예약할 수 있으며, 이를 조합하여 매우 복잡한 스케줄을 만들 수 있습니다.
  • 스크립트 및 명령어 실행: cron은 실행할 작업을 스크립트 또는 명령어로 지정할 수 있습니다. 이를 통해 데이터베이스 백업, 로그 파일 정리, 서버 유지 보수 작업 등을 자동으로 수행할 수 있습니다.
  • 로그와 알림: cron은 작업 실행 결과를 로그로 남기며, 이를 통해 작업의 성공 또는 실패 여부를 추적할 수 있습니다. 또한, 사용자에게 알림을 보내 작업의 실행 상태를 모니터링할 수 있습니다.
Windows 작업 표시줄 설정으로 이동하는 방법

crontab

crontab은 cron 작업을 관리하기 위한 명령어 및 파일입니다. 사용자는 crontab 명령어를 사용하여 자신의 작업 스케줄을 설정하고 관리합니다. crontab을 사용하면 사용자는 cron 작업을 생성, 수정, 삭제하고 해당 작업을 관리할 수 있으며, 다음과 같은 특징이 있습니다.

  • 사용자별 작업 관리: 각 사용자는 자신의 crontab 파일을 편집하여 개별 작업을 관리합니다. 이렇게 하면 여러 사용자가 동시에 자신의 작업을 정의하고 관리할 수 있으며, 작업 간의 충돌을 방지할 수 있습니다.
  • 편리한 명령어: crontab 명령어를 사용하여 작업을 추가, 수정, 삭제할 수 있어 사용자가 스케줄을 관리하기 편리합니다. 이 명령어를 사용하면 간단한 텍스트 에디터가 열리고, 사용자는 cron 작업의 스케줄과 실행할 명령어를 정의할 수 있습니다.
  • 시스템 및 사용자 작업: crontab은 시스템 레벨과 사용자 레벨의 작업을 모두 관리합니다. 시스템 관리자는 시스템 레벨에서 작업을 예약하고 사용자는 자신의 작업을 설정합니다.
  • 스케줄 표현식: crontab을 사용하면 사용자는 작업을 실행할 정확한 시간과 날짜를 설정할 수 있도록 스케줄 표현식을 사용할 수 있습니다. 이를 통해 작업을 정확하게 예약할 수 있습니다.
  • 작업 모니터링: crontab을 사용하여 정의한 작업은 시스템 로그에 기록되므로 작업의 실행 상태를 추적하고 모니터링할 수 있습니다. 이를 통해 작업의 성공 또는 실패 여부를 확인할 수 있습니다.

crontab 실행 및 작성 방법

cron을 사용한 스크립트 예약 cron은 Unix 기반 시스템에서 널리 사용되는 작업 스케줄러입니다. macOS에서도 cron을 사용하여 스크립트를 정기적으로 실행할 수 있습니다.

launchd

crontab 파일 실행

Select-an-editor
Select an editor

터미널에서 이 명령를 작성하고 실행하면 crontab 설정 파일을 편집할 수 있는 상태로 전환합니다. 만약 처음 실행한 경우 이미지와 같이 에디터를 선택할 수 있는 단계가 보여지게 됩니다.

crontab -e

crontab-파일
crontab 파일

vi, nano 등 선택한 텍스트 편집기에서 파일이 열리면 일반적으로 위와 유사한 crontab 설정 내용들을 볼 수 있습니다.

cron 명령 추가

crontab파일을 열고 자동으로 동작하도록 할 작업을 등록할 수 있습니다.

새로운-명령-추가
새로운 명령 추가

여기서 페이지 하단에 다음과 같은 형식의 cron 명령을 하나씩 추가하면 됩니다.

* * * * * /Users/your_username/my_script.sh

* * * * * command-to-be-executed
┬ ┬ ┬ ┬ ┬
│ │ │ │ └───── 분   (0 - 59)
│ │ │ └─────── 시간 (0 - 23)
│ │ └───────── 일   (1 - 31)
│ └─────────── 월   (1 - 12)
└───────────── 요일 (0 - 7, 일요일은 0 또는 7)

기본 적으로 이러한 형태로 되어 있으며 구문 좌측의 *이 나타내는 의미만 알고 있다면 아주 손쉽게 사용할 수 있습니다.

  • 분 (0-59)
  • 시간 (0-23)
  • 일 (1-31)
  • 월 (1-12)
  • 요일 (0-7, 일요일은 0 또는 7)
macOS 맥북 Finder 실행하는 방법

cron 명령 예시

30 4 * * 1 /Users/your_username/my_script.sh

예를 들어, 매주 월요일 오전 4시 30분에 스크립트를 실행하려면 다음과 같이 작성합니다.

30 9 * * * /Users/your_username/my_script.sh

이렇게 작성하면 2023년 10월 15일 오후 3시 45분에 스크립트가 실행됩니다.

0 */2 * * * /Users/your_username/my_script.sh

이렇게 작성하면 2시간마다 스크립트가 실행됩니다.

이제 작성한 스케줄 표현식이 올바르게 입력되었는지 확인하고, 사용 중인 텍스트 에디터의 저장 및 종료 명령을 입력하여 crontab 설정을 저장하고 종료합니다. 모두 제대로 입력 되었다면 이후 cron이 설정한 시간에 따라 지정한 스크립트를 자동으로 실행하게 됩니다.

로그 기록 확인

작성한 스케줄이 올바르게 동작하는지를 확인하려면 스케줄 시간이 되기를 기다리거나 바로 체크 가능한 시간(5분 뒤 정도)으로 스케줄을 지정하면 되며, 필요한 경우 로그 기록을 통해 결과를 확인할 수 도 있습니다.

sudo cat /var/log/syslog | grep CRON

대부분의 Linux 배포판과 macOS에서는 cron 작업 로그를 /var/log/syslog 또는 /var/log/cron 파일에 저장합니다.

  • 이 명령은 cron과 관련된 로그 항목을 검색합니다. 필요한 경우 grep 명령어를 사용하여 로그를 필터링하고 특정 작업에 대한 정보를 확인할 수 있습니다.
  • 일부 Linux 배포판은 cron 로그를 다른 위치에 저장할 수 있으며, 로그 파일의 경로는 배포판마다 다를 수 있습니다. 대표적인 예로, Ubuntu에서는 /var/log/syslog를 사용하지만, 다른 배포판에서는 다른 위치일 수 있습니다.

터미널에서 위 명령어를 사용하면 로그 파일을 확인할 수 있고 일반적으로 다음과 같이 반환됩니다.

Sep 25 04:30:01 your_hostname CRON[12345]: (username) CMD (/path/to/your_script.sh)
워드프레스에서 테마 추가하는 방법

관련 글

댓글로 남기기 어려운 내용은 Contact Form 에서 개별적으로 문의 할 수 있습니다. 해당 글과 연관 된 내용은 Copy를 이용해 현재 페이지의 주소를 복사 후 문의 폼에 입력시 보다 정확한 답을 얻을 수 있습니다.

Leave a Comment