리눅스 크론탭 문법과 작성법 마스터하기

안녕하세요. 오늘은 리눅스 크론탭 작성법에 대해 알려드리겠습니다. 리눅스에서 주기적으로 실행되어야 하는 작업들을 자동화하기 위해 사용하는 도구가 크론탭(crontab)입니다. 크론탭은 특정 시간에 특정 명령어나 스크립트를 실행하도록 예약할 수 있습니다.

리눅스 크론탭 파일 구조
크론탭 파일은 다음과 같은 구조로 이루어져 있습니다.
1 2 |
# 분 시 일 월 요일 명령어 |
- 분: 0 ~ 59
- 시: 0 ~ 23
- 일: 1 ~ 31
- 월: 1 ~ 12
- 요일: 0 ~ 6, 0은 일요일, 1은 월요일, … , 6은 토요일을 의미합니다.
- 명령어: 실행할 명령어나 스크립트를 지정합니다. 절대경로나 상대경로를 사용할 수 있습니다.
예시로 다음과 같은 크론탭 파일은 매일 10시 30분에 /home/user/test.sh 스크립트를 실행하도록 예약합니다.
1 2 |
30 10 * * * /home/user/test.sh |
리눅스 크론탭 파일 작성
크론탭 파일을 작성하려면 다음과 같은 명령어를 사용합니다.
1 2 |
crontab -e |
이 명령어는 기본적으로 vi 편집기를 사용하여 크론탭 파일을 열지만 다른 편집기를 사용하고 싶다면 EDITOR 환경변수를 설정하면 됩니다. 예를 들어 nano 편집기를 사용하고 싶다면 다음과 같이 입력합니다.
1 2 3 |
export EDITOR=nano crontab -e |
크론탭 파일을 열었으면 원하는 명령을 예약할 수 있습니다.
크론탭 파일에는 여러 줄의 명령을 등록할 수 있는데, 각 줄은 하나의 작업을 의미합니다. 작업을 추가하고 저장 후 종료하면 됩니다. 그러면 크론탭이 자동으로 변경사항을 반영하여 작업을 실행합니다.
리눅스 크론탭 파일 확인
크론탭 파일에 등록된 작업들을 확인하려면 -l 옵션을 입력하면 됩니다.
1 2 |
crontab -l |
이 명령어는 현재 사용자의 크론탭 파일을 출력합니다. 다른 사용자의 크론탭 파일을 확인하고 싶다면, -u 옵션과 사용자 이름을 함께 사용하면 됩니다. 예를 들어 root 사용자의 크론탭을 확인하고 싶다면 다음과 같이 입력합니다.
1 2 |
crontab -u root -l |
리눅스 크론탭 파일 삭제
크론탭 파일에 등록된 작업들을 모두 삭제하려면 다음과 같은 명령어를 사용합니다.
1 2 |
crontab -r |
이 명령어는 현재 사용자의 크론탭 파일을 삭제합니다. 다른 사용자의 크론탭 파일을 삭제하고 싶다면, -u 옵션과 사용자 이름을 함께 사용하면 됩니다. 예를 들어 root 사용자의 크론탭 파일을 삭제하고 싶다면 다음과 같이 입력합니다.
1 2 |
crontab -u root -r |
리눅스 크론탭 파일 문법
크론탭 파일 문법에는 다음과 같은 특수문자들을 사용할 수 있습니다.
- *: 모든 값을 의미합니다. 예를 들어, 분에 *를 사용하면 매 분마다 작업을 실행하라는 의미입니다.
- ,: 여러 값을 나열할 수 있습니다. 예를 들어, 요일에 1,3,5를 사용하면 월요일, 수요일, 금요일에 작업을 실행하라는 의미입니다.
- -: 범위를 지정할 수 있습니다. 예를 들어, 시에 9-17을 사용하면 9시부터 17시까지 매 시간마다 작업을 실행하라는 의미입니다.
- /: 간격을 지정할 수 있습니다. 예를 들어, 분에 */10을 사용하면 10분마다 작업을 실행하라는 의미입니다.
다음과 같은 크론탭 파일은 매월 1일부터 15일까지, 홀수 시간에 5분마다 /home/user/test.sh 스크립트를 실행하는 예시입니다.
1 2 |
*/5 1-23/2 1-15 * * /home/user/test.sh |
리눅스 크론탭 주의사항
크론탭 파일을 작성할 때, 다음과 같은 주의사항들을 염두에 두어야 합니다.
- 크론탭 파일의 마지막 줄에는 반드시 개행 문자가 있어야 합니다. 그렇지 않으면 마지막 줄의 작업이 실행되지 않을 수 있습니다.
- 크론탭 파일에는 환경변수를 설정할 수 있습니다. PATH 환경변수를 설정하면 명령어의 절대경로를 입력하지 않아도 되지만 크론탭 파일에 설정한 환경변수는 크론탭 파일에서만 유효하며 실행하는 명령어나 스크립트에는 영향을 주지 않으므로 명령어나 스크립트에서 필요한 환경변수는 별도로 설정해주어야 합니다.
- 크론탭 파일에는 주석을 작성할 수 있습니다. 주석은 #으로 시작하는 줄로, 크론탭 서비스에 의해 무시됩니다. 하지만, #은 명령어의 일부로 사용될 수도 있으므로, 주의해야 합니다. 예를 들어 아래와 같은 줄은 #이 뒤에 있어서 명령어의 일부로 인식되기 때문에 매 분 /home/user/test.sh #test 스크립트를 실행하려고 시도합니다.
1 2 |
* * * * * /home/user/test.sh #test |
이럴 땐 # 앞에 \를 붙여서 주석으로 처리할 수 있습니다. 또는, 명령어를 따옴표로 감싸서 #을 문자 그대로 인식하게 할 수 있습니다.
1 2 |
* * * * * "/home/user/test.sh #test" |
- 크론탭 파일의 실행 결과는 기본적으로 메일로 전송됩니다. 메일을 받고 싶지 않다면, 명령어 뒤에 >/dev/null 2>&1 을 추가하면 됩니다. 이는 표준 출력과 표준 에러를 모두 /dev/null로 보내는 의미입니다. 예를 들어, 다음과 같이 작성하면 됩니다.
1 2 |
* * * * * /home/user/test.sh >/dev/null 2>&1 |
이상으로, 리눅스 크론탭 문법 작성법에 대해 알아보았습니다. 크론탭을 이용하면, 다양한 작업들을 원하는 시간에 자동으로 실행할 수 있습니다. 크론탭 파일의 문법과 작성법을 잘 숙지하고, 주의사항들을 지키면서, 효율적인 작업 스케줄링을 할 수 있기를 바라겠습니다. 다른 IT 정보를 확인하시려면 블로그 메인도 방문해 주세요. 감사합니다.