리눅스 크론탭(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
0 * * * * {실행할 명령}
- 매일 오전 6시에 명령 실행
1
0 6 * * * {실행할 명령}
- 매일 매시간 0분, 30분 마다 명령 실행
1
0,30 * * * * {실행할 명령}
- 매일 오전 6시 0분부터 10분까지, 매분마다 명령 실행
1
0-10 6 * * * {실행할 명령}
- 매 5분마다 명령 실행
1
*/5 * * * * {실행할 명령}
4. 크론탭 로깅
크론탭이 정상적으로 동작했는지, 처리가 어떻게 되었는지 확인하기 위해서는 로깅 기능을 활용하면 됩니다.
기존 크론탭 명령에서 로그를 남길 파일 Path만 지정해주면 끝입니다.
아래는 매분 helloworld.py
파일을 실행하고, /etc/crontab_log
경로의 helloworld.log
라는 파일에 로깅을 하는 예시입니다.
1
* * * * * python helloworld.py > /etc/crontab_log/helloworld.log 2>&1
마무리
이번 포스팅에서는 반복적인 작업을 자동화하여, 시스템 관리의 효율성을 극대화할 수 있는 크론탭(Crontab)에 대해 알아보았습니다. 이번 포스팅이 시스템을 더 효율적으로 관리하는데 도움이 되었기를 바랍니다.
감사합니다.