[LINUX] 크론탭 스케쥴 설정 | crontab schedule
1시간 마다 /root/test.php 를 실행하도록 설정하는
예) 01 * * * * root /root/test.php
/etc/crontab 에 위 라인을 추가하고
/etc/init.d/crond restart
하면 한 시간마다 실행됩니다.
////////////////////////////////
cron 설정하기
* * * * * 실행파일
순서대로 분 시 일 월 요일 실행파일
분 : 0-59
시 : 0-23
일 : 0-31
월 : 0-12
요일 : 0-6 : (일-토 : 0과 7은 일요일이며 1부터 월요일이 시작된다.)
* : 모든 시간대에 실행이 된다.
예> * * * * * 실행파일 : 매분마다 실행한다.
- : 기간을 범위지정한다.
예> 10-20 1 * * * 실행파일 : 매일 새벽 1시 10분부터 20분까지 1분마다 실행한다.
예> 10-20,30-40 1 * * * 실행파일 : 매일 새벽 1시 10분부터 20분까지 1분마다 실행된 후 30분부터 40분까지 1분마다 실행한다.
, : 기간을 지정한다.
예>* 10,14,17 * * * 실행파일 : 매일 10시, 14시, 17시에 실행한다.
/ : 간격을 지정한다.
예> */3 * * * * 실행파일 : 매 3분마다 실행한다.
사용 예>
*/3 * * * * root /usr/local/apache2/bin/php -q 실행파일 > 20120302.log &
: root 권한으로 매3분마다 백그라운드로 실행하고 로그파일을 남긴다.
참고> 만약 중복되게 지정하면 중복으로 실행한다.
예> 30 10 10,15 * 1 실행파일 : 매달 10일, 15일 10시 30분에 실행, 매주 일요일에도 실행한다.
주의> crontab 설정을 변경한 후에는 cron 서비스를 재시작해야한다.
]# service crond restart
/////////////////////////////////////////////////
- 시스템의 주기적인 cron 작업의 설정, 수정등을 하는 명령어
- 시스템에서 가장 중요한 데몬중의 하나인 crond 와 직접적인 관련이 있는 명령어
- crond 데몬은 /etc/rc.d/init.d/crond 의 스크립트에 의해 시작, 종료, 재시작될수 있음
- crond 데몬
- /etc/crontab 파일
- /etc/rc.d/init.d/crond 스크립트
- /var/spool/cron 디렉토리내의 크론설정파일들
명령어 위치 : /usr/bin/crontab
사용형식 : crontab [ -u 사용자id ] 파일
crontab [ -u 사용자id ] { -l | -r | -e }
cat /etc/crontab
매시 1회 자동실행하기 위한 시스템 크론 설정
01 * * * * root run-parts /etc/cron.hourly
- 매일 매시 01분마다 /etc/cron.hourly 디렉토리내에 존재하는 파일들을 실행
매일 1회 자동실행하기 위한 시스템 크론설정
02 4 * * * root run-parts /etc/cron.daily
- 매일 새벽 4시 02분마다 /etc/cron.daily 디렉토리내에 존재하는 파일들을 실행
매주 1회 자동실행하기 위한 시스템 크론설정
22 4 * * 0 root run-parts /etc/cron.weekly
- 매주 일요일 새벽 4시 22분마다 /etc/cron.weekly 디렉토리내에 존재하는 파일들을 실행
매월 1회 자동실행하기 위한 시스템 크론설정
42 4 1 * * root run-parts /etc/cron.monthly
->매월 1일 새벽 4시 42분마다 /etc/cron.monthly 디렉토리내에 존재하는 파일들을 실행
* root 이외의 사용자에게 crontab 명령어를 이용할 수 있게 하는 방법
- /etc/cron.allow 파일에 사용자의 id를 등록
* 일반사용자의 crontab 명령어사용을 제안하고자 한다면
- /etc/cron.deny 파일에 사용자의 id 를 등록
* cron 설정하는 방법
40 3 * * * root /home/mysql/mysql_backup.sh
맨 앞의 40은 40분을 의미함 (분을 의미:0~59)
그 뒤의 3은 03시를 의미함 (시를 의미:0~23)
그 뒤의 * 은 매일을 의미함 (일을 의미:1~31)
그 뒤의 * 은 매월을 의미함 (월을 의미:1~12)
그 뒤의 * 은 매주를 의미함(요일을 의미 1:월요일~7:일용일)
그 뒤의 root /home/mysql/mysql_backup.sh 는 root 계정으로 mysql_backup.sh을 실행하라는
의미
* 문자 : 각 필드에 해당하는 모든 숫자를 의미
- 문자 : 각 필드자리에 하이픈 문자가 올수 있음
ex) 일 필드자리에 11-15 (11,12,13,14,15일을 의미)
,문자 : 각 필드자리에 콤마문자가 올수 있음
ex) 일 필드자리에 1,11,21 (1일,11일 21일을 의미)
/////////////////////////////////////////////////////////////////////
59 * * * * su - oracle -c "sh /data4/BACKUP/HOTBACKUP/1HOUR_ARCH_BACKUP.sh"
/////////////////////////////////////////////////////////////////////////////////
[HP_UX]crontab
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
◎ 범례
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
굵은문자 : Reserved Word (UNIX 예약어)
가는문자 : User Define (사용자가 직접 입력해야 하는 부분)
[ ] : Option (지정하지 않아도 되거나 생략시 기본 설정값으로 대체됨)
or, | : Choice(여러가지중 하나를 선택한다)
윗글자 : ¹ ² 등은 하단의 참조
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
◇ FORMAT
─────────────────────────────────────────────
crontab [-e|-l|r] [username]
-e : crontab을 추가/수정삭제 한다
cron에 새로운 작업을 추가하거나 추가된 작업의 수정, 삭제를 위하여 사용된다.
기본적으로 vi Editor를 사용한다.
-l : crontab의 내용을 보여준다
-r : crontab파일을 삭제한다.
username : 사용할 crontab 사용자
보통의 경우는 해당 아이디로 로그인 후 crontab을 사용하므로 거의 생략됨
root의 경우 사용됨
◆ 참고
─────────────────────────────────────────────
crontab 파일 구조
crontab파일은 "분 시 일 월 주 실행명령"의 형태로 구성되어있다
값을 주지 않을 경우 * 로 표시한다.
* * * * * Execute-Command
┬ ┬ ┬ ┬ ┬ ┬
│ │ │ │ │ └─실행할 명령어
│ │ │ │ └─── 실행할 요일 (0:일요일, 1:월요일, 2:화요일...6:토요일)
│ │ │ └───── 실행할 월 (1 ~ 12)
│ │ └─────── 실행할 일 (1 ~ 31)
│ └───────── 실행할 시간 (0 ~ 23)
└─────────── 실행할 분 (0 ~ 59)
각 구성은 콤마(,)를 사용하여 여러개를 줄 수 있다
예륻 들어 분을 30분 단위로 하고자 한다면 0,30 과 같이 줄 수 있다
※ 자바(Java)를 클론(cron)으로 실행하는 경우 등은 실행 명령어를 담은 Shell Script를
작성하여 실행명령에 넣어야 한다.
※ HP-UX cron 관련 파일
/var/adm/cron Main cron directory
/var/spool/cron/atjobs Directory containing at and batch job files
/var/spool/cron/crontabs Directory containing crontab files
/var/adm/cron/log Accounting information(실행 로그)
◆ 예제
─────────────────────────────────────────────
예1) 0,30 * * * * /user/ghi/test.sh
: 매시간 0분, 30분에 test.sh를 실행 시킨다. (1시간에 2번 실행된다.)
예2) 30 * * * * /user/ghi/test.sh
: 매시간 30분에 test.sh를 실행 시킨다. (1시간에 1번 실행된다.)
예3) 30 13 * * 6 /user/ghi/test.sh
: 매주 토요일 오후 1시 30분에 test.sh를 실행 시킨다
예4) 30 0 1 1,4,7,10 * /user/ghi/test.sh
: 매년 1,4,7,10월의 1일 0시 30분에 test.sh를 실행 시킨다
(분기별 마감 등의 작업에 사용될 수 있다)
////////////////////////////////////////////////////////////////////////////////////////////////////
로그 남기기
stdout으로 화면에 출력되는 모든 로그를 남길 때.
'>'를 쓰면 매번 새로 기록(overwrite),
'>>'를 쓰면 기존 파일에 append가 됨
crontab 예제
crontab -e를 통해 아래의 명령을 크론테이블에 추가시킴.
매월매일 모든요일 06:00시에 /usr/local/bin/test.sh를 실행
00 06 * * 0-6 /usr/local/bin/test.sh >> /dev/null
">> /dev/null"는 cron중 발생하는 로그를 버리도록 지정
1분간격으로 /usr/local/bin/test.sh를 실행
* * * * * /usr/local/bin/test.sh >> /dev/null
10분간격으로 /usr/local/bin/test.sh를 실행
10,20,30,40,50,60 * * * * /usr/local/bin/test.sh >> /logs/test.log
">> /logs/test.log"는 cron 실행중 발생한 로그를 test.log 파일에 append 시킴
'IT > linux' 카테고리의 다른 글
[linux] 하위 디렉터리 용량 확인하는 방법, (0) | 2023.01.06 |
---|---|
[LINUX] 서버 정보 확인 방법 | 자바 버전, opesn ssl 버전, oracle 버전, memory 용량, cpu 코어 수, redhat 버전 확인 (0) | 2022.12.13 |
[LINUX] 사용자 패스워드 | 비밀번호 변경 방법 (0) | 2022.11.17 |
[LINUX] 최근 변경된 파일 검색 (0) | 2022.11.16 |
[LINUX] /etc/passwd 와 /etc/shadow 필드 설명 (0) | 2022.11.16 |