Post

리눅스 크론탭(Crontab) 파헤치기

리눅스 크론탭(Crontab) 파헤치기

크론탭(Crontab)이란, Linux 기반 시스템에서 사용되는 스케줄링 도구로, 사용자가 정의한 시간에 특정 작업을 자동으로 실행할 수 있도록 해줍니다. Windows 작업 스케줄러와 유사한 역할을 하며, 데이터베이스 백업, 로그 정리 등과 같이 다양한 용도로 활용될 수 있습니다.

이번 포스팅에서는 이처럼 자동화된 작업 관리를 통해 시스템 관리 효율성을 높이고, 반복적인 작업을 최소화할 수 있는 크론탭(Crontab)에 대해 정리해보고자 합니다.

1. 크론탭 기본 명령어


크론탭 설정 파일을 열기 위해 다음 명령어를 사용합니다:

1
crontab -e

이 명령어를 실행하면 크론탭 작업을 관리할 수 있는 설정 파일이 열리며, 해당 파일에 명시된 작업이 지정된 스케줄에 따라 실행됩니다. 참고로, 크론탭은 시스템의 각 사용자 개별적으로 동작합니다. 따라서 특정 사용자의 작업을 설정하려면, 해당 사용자 계정으로 로그인한 후 crontab -e 명령어를 실행해야 합니다.

아래 명령어는 설정된 크론탭의 리스트를 보여줍니다:

1
crontab -l

cat 명령어를 통해 파일 내용을 보는 것과 동일하게 수행됩니다.

아래 명령어는 설정된 모든 크론탭을 삭제합니다:

1
crontab -r

2. 크론탭 등록


먼저 간단한 커맨드를 크론탭에 등록하는 방법부터 알아보도록 하겠습니다.
crontab -e 명령어를 통해 설정 파일을 열고, 아래 내용을 작성해줍니다.

1
* * * * * ls

위 설정은 매분마다 ls 명령어가 동작하게 하는 기능을 합니다.
여기서 * * * * *은 크론탭 실행 주기를 나타내며, 이에 대해서는 아래 자세하게 설명하도록 하겠습니다.
이와 같이 크론탭은 실행 주기 + 실행할 명령의 조합으로 간단하게 설정할 수 있습니다.

3. 크론탭 스케줄링


3-1. 스케줄 구성

크론탭 스케줄링은 총 5개의 필드로 구성됩니다.

1
2
* * * * * {실행할 명령}
분 시 일 월 요일 {실행할 명령}
  • 분(Minute): 0부터 59까지의 값
  • 시(Hour): 0부터 23까지의 값
  • 일(Day): 1부터 31까지의 값
  • 월(Month): 1부터 12까지의 값
  • 요일(Day of Week): 0부터 7까지의 값 (0과 7은 일요일)

이처럼 * 대신 숫자를 사용하여 세부 스케줄을 조정할 수 있으며, 특수 문자를 활용하여 특별한 조건으로 스케줄링을 할 수도 있습니다.

  • * : 모든 값 (예: 모든 시간, 모든 분)
  • , : 여러 값을 지정 (예: 1,15는 1분과 15분에 실행)
  • - : 범위를 지정 (예: 1-5는 1일부터 5일까지 실행)
  • / : 주기를 지정 (예: */5는 5분마다 실행)

3-2. 스케줄 예시

  1. 매시간마다 명령 실행
    1
    
    0 * * * * {실행할 명령}
    
  2. 매일 오전 6시에 명령 실행
    1
    
    0 6 * * * {실행할 명령}
    
  3. 매일 매시간 0분, 30분 마다 명령 실행
    1
    
    0,30 * * * * {실행할 명령}
    
  4. 매일 오전 6시 0분부터 10분까지, 매분마다 명령 실행
    1
    
    0-10 6 * * * {실행할 명령}
    
  5. 매 5분마다 명령 실행
    1
    
    */5 * * * * {실행할 명령}
    

4. 크론탭 로깅


크론탭이 정상적으로 동작했는지, 처리가 어떻게 되었는지 확인하기 위해서는 로깅 기능을 활용하면 됩니다.
기존 크론탭 명령에서 로그를 남길 파일 Path만 지정해주면 끝입니다.

아래는 매분 helloworld.py 파일을 실행하고, /etc/crontab_log 경로의 helloworld.log 라는 파일에 로깅을 하는 예시입니다.

1
* * * * * python helloworld.py > /etc/crontab_log/helloworld.log 2>&1

마무리


이번 포스팅에서는 반복적인 작업을 자동화하여, 시스템 관리의 효율성을 극대화할 수 있는 크론탭(Crontab)에 대해 알아보았습니다. 이번 포스팅이 시스템을 더 효율적으로 관리하는데 도움이 되었기를 바랍니다.

감사합니다.

This post is licensed under CC BY 4.0 by the author.