안녕하세요 CentOS 에서 cron 사용법에 대해서 물어보셨군요
cron 설치 방법에 대해서는 생략할께요
그럼 크론이 돌아가고 있나 없나 실행하는 방법에 대해서 알려드릴게요
#ps -ef | grep crond
root 12143 | 0 | 4:22 ? 00:00:00 crond
기본적으로 리눅스 계열 os에서는 cron 데모이 주기적으로 실행을 합니다.
cron은 시작할때부터 끝날 때가지 계속 실행되어지며, cron 환경설정 파일은 crontab 이라고 부릅니다.
cron 이 참조하는 crontab 파일 위치는
/var/spool/cron
/etc/cron.d
/etc/crontab
이 3가지 입니다.
/var/spool/cron - 사용자 계쩡당 1개씩 가진다. 시스템 개별 사용자를 위한 crontab
/etc/crontab - 관리자가 직접 지정한 작업 설정, 임이의 사용자 권한으로 실행 할 수 있음, 시스템 관련 작업들을 등록
/etc/cron.d - 소프트웨어 패키지 설치할 때 이곳에 작업을 등록하는 공간으로 사용됨
crontab 옵션
- crontab script.sh (script.sh 작업을 예약)
- crontab -l (현재 걸려 있는 작업 목록 표시)
- crontab -r (작업목록을 비움)
- crontab -e (새로운 작업 입력,수정,삭제)
crontab 파일 형식
# MIN HOUR MDAY MON DOW COMMAND
5 * * * * echo 'Hello'
Item Definition Valid Values
MIN Minute 0-60
HOUR Hour [24-hour clock] 0-23
MDAY Day of Month 1-31
MON Month 1-12 OR jan,feb,mar,apr ...
DOW Day of Week 0-6 OR sun,mon,tue,wed,thu,fri,sat
COMMAND Command to be run Any valid command-line
<1. crontab -e 등록 예>
#Run command at 7:00am each weekday [mon-fri]
00 07 * * 1-5 mail_pager.script 'Wake Up'
#Run command on 1st of each month, at 5:30pm
30 17 1 * * pay_rent.script
#Run command at 8:00am,10:00am and 2:00pm every day
00 8,10,14 * * * do_something.script
#Run command every 5 minutes during market hours
*/5 6-13 * * mon-fri get_stock_quote.script
#Run command every 3-hours while awake
0 7-23/3 * * * drink_water.script
실행할 xxx.sh 파일에 실행권한이 없을 경우 /bin/sh로 실행되도록 한다.
1-59 * * * * /bin/sh do_something.script > /dev/null
(매분마다 작업을 수행하고 결과는 출력하지 않는다)
<2. /etc/crontab 설정 예>
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=""
HOME=/
# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
01 2 * * * root run-parts /etc/cron.custom <----- 매일 2am 에 /etc/cron.custom 폴더에 있는 스크립트 실행. 물론 여기서 /etc/cron.custom 폴더를 생성하고 폴더 내에 스크립트 파일도 생성해야 한다.
# test
01 23 * * * root /bin/sh /var/tmp/test.sh <------ 매일 11pm에 /var/tmp/test.sh 실행