Linux crontab¶
요약¶
crontab -e #수정 페이지에 접근한다. (0~2를 입력해서 Editor에 접근)
* * * * * touch /tmp/1 #제일 하단에 명령줄 입력 및 저장
crontab -l #저장된 명령어 확인
리눅스에서 crontab을 이용해서 내가 원하는 작업을 특정 시간에 실행하도록 제어할 수 있다.
1. crontab 기본 설정 방식¶
* * * * * {수행할 명령어}
┬ ┬ ┬ ┬ ┬
│ │ │ │ │
│ │ │ │ └──── 요일 (0 - 7) (0,7 일요일, 1=월, 2=화, 3=수, 4=목, 5=금, 6=토)
│ │ │ └───────── 월 (1 - 12)
│ │ └────────────── 일 (1 - 31)
│ └─────────────────── 시 (0 - 23)
└──────────────────────── 분 (0 - 59)
설정 방식에서 사용되는 특수문자 설명은 다음과 같다.
| 기호 | 의미 | 예시 | 설명 |
|---|---|---|---|
* |
매번 | * |
매분, 매시 실행 |
, |
목록 | 10,30 |
10분과 30분에 실행 |
- |
범위 | 9-18 |
9시부터 18시까지 실행 |
/ |
간격 | */10 |
10분 간격으로 실행 |
유용한 설정 예시
*/5 * * * *: 5분마다 실행0 9 * * 1-5: 평일(월~금) 오전 9시 정각에 실행0 0 1 * *: 매월 1일 자정에 실행
단축어 (Shortcuts)
| 단축어 | 의미 | 실제 시간 | 기존 문법과 동일 |
|---|---|---|---|
@hourly |
매시간 정각 | 매시 0분 | 0 * * * * |
@daily |
매일 자정 | 00시 00분 | 0 0 * * * |
@weekly |
매주 일요일 | 일요일 00시 00분 | 0 0 * * 0 |
@monthly |
매월 1일 | 1일 00시 00분 | 0 0 1 * * |
@yearly |
매년 1월 1일 | 1월 1일 00시 00분 | 0 0 1 1 * |
@reboot |
부팅 직후 | (재부팅 될 때마다) | (해당 없음) |
0 0 * * * /home/user/backup.sh
@daily /home/user/backup.sh
crontab 구조
- *이 위치한 부분은 분, 시, 일, 월, 요일을 순서대로 의미하고 모두 *로 설정하면 매 1분마다 라는 의미가 됩니다.
* * * * * /path /path
3. 사용예시¶
아래 내용은 1분마다 /home/{user}/test.txt의 파일을 /tmp에 복사하라는 의미
* * * * * cp /home/{user}/test.txt /tmp/ #1분마다
*/3 * * * * cp /home/{user}/test.txt /tmp/ #3분마다
0 * * * * cp /home/{user}/test.txt /tmp #매시 정각 0분에 실행
crontab 편집기에 입력한 후 저장 및 종료하면 아래와 같은 메시지가 출력되면서, 정상적으로 등록된 것을 알 수 있다.
crontab: installing new crontab
crontab을 사용할 때 주요 명령어는 다음과 같다.
crontab -e #수정 페이지 접근
crontab -l #crontab 적용한 후, 적용 결과 확인
crontab -r #적용된 모든 예약내역 삭제
crontab -i #
Truble Shooting¶
- 절대경로 및 환경변수 문제
-
절대경로로 설정해야 crontab이 적상적으로 동작
pwd /home/user...Crontab은
.bashrc등의 환경 변수는 불러올 수 없기 때문에, 필요한 경우 스크립트 내부에source ~/.bashrc를 넣거나 절대 경로 명령어 사용- 예시:
python❌ ->/usr/bin/python3⭕
- 예시:
- 스크립트를 실행했을 때 출력 결과를 남기지 않을려면
/dev/null를 사용하는 방식* * * * * /home/user/script.sh > /dev/null 2>&1