Post

Linux crontab

1. crontab

정기적으로 지정한 시간에 실행하고 싶은 명령어를 등록한다. 스크립트를 등록해도 된다.

2. 주요 옵션

옵션설명
-l등록된 명령어 리스트 확인
-e등록된 명령어를 수정

3. 사용 예제

1) 크론탭 등록

-e 옵션으로 실행하면 크론탭을 등록하기 위한 파일이 열린다. vi에디터와 동일한 명령으로 필요한 명령어를 등록할 수 있다.

1
2
3
4
5
# 크론탭을 등록
$ crontab -e

# 등록된 크론탭을 확인
$ crontab -l

2) 크론탭 주기

크론탭을 등록할 때는 실행하고자 하는 주기와 명령어를 입력한다. 주기는 분, 시, 일, 월, 요일의 형태로 입력한다.

*는 모두를 의미하고 매분, 매시, 매일, 매월, 모든 요일에 실행하고 싶을 때 사용한다.

주기비고
0 ~ 59
0 ~ 23
1 ~ 31
1 ~ 12
요일0 ~ 7 (0, 7이 일요일)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 입력 형태 
분 시 일 월 요일 명령어

# 매 50분에 time.sh 실행 
50 * * * * /mnt/usr/time.sh

# 매일 1시에 log 로 끝나는 파일을 찾아서 find.log 파일로 저장 
0 1 * * * find -name '*.log' ./ >> /test/log/fin.log 

# 5분 마다 program.sh 실행
*/5 * * * * /home/user/program.sh

# 4-10 시 사이에 1시간마다 program.sh 실행
0 4-10/1 * * * /home/user/program.sh

# 매일 1시, 3시에 program.sh 를 실행하고 로그를 저장
# 크론탭에 입력할 때 %는 오류가 발생하기 때문에 역슬래쉬(\)로 감싸 주어야 함 
0 1,3 * * /home/user/program.sh >> /home/user/logs/`date -u +\%Y\%m\%d.\%H\%M.log` 2>&1

3) echo로 크론탭 등록

크론탭을 일괄로 등록하고 싶을 때 echo 명령을 이용하여 처리할 수 있다. /var/spool/cron/유저명에 유저별 크론탭이 있다. 여기에 넣어주면 crontab -e와 동일한 효과를 얻을 수 있다.

1
2
3
4
sudo bash -c 'echo \"
# hadoop log cleansing
0 1 * * * find /var/log/hadoop -not -name \"*.gz\" -type f -mtime +2 -exec gzip {} \;
0 1 * * * find /var/log/hadoop -name \"*.gz\" -mtime +14 -delete \" >> /var/spool/cron/user_name'

4. 크론탭 위치

크론탭 파일은 OS에 따라 위치가 다를 수 있다.

  • CentOS
    • /var/spool/cron/유저명
  • Ubuntu
    • /var/spool/cron/crontab/유저명

[출처 및 참고]

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