리눅스 반복 예약 작업 cron,crond,crontab
- 프로세스 예약 데몬
- 리눅스용 작업스케줄러
- 특정시간에 명령어가 수행되도록 등록가능
cron이 돌고 있는지 확인 : ps -ef | grep cron
cron 데몬의 실행과 종료 : /etc/rc.d/init.d/crond [start / restart / stop]
등록 : crontab - e
삭제 : crontab - r
확인 : crontab - l
일반사용자에게 crontab 명령어 사용하도록 설정 허가
=> /etc/cron.allow 여기에 ID 등록
일반사용자의 crontab 명령어사용을 제한하고자 한다면
=>/etc/cron.deny 에 ID를 등록
cron.allow 파일이 있으면 이 파일에 들어있는 ID만 사용 가능
cron.deny 파일이 있으면 이 파일에 들어있는 ID는 사용 불가
cron 설정한 후에는 crond 데몬을 재실행하지 않아도 된다.crontab -e 으로 설정 후 빠져나오면 바로 적용
작성방법
crontab -e
* * * * *
분 시 일 월 요일 명령어
분: 0~59
시: 0~23
일: 1~31
월: 1~12
요일: 0~7
명령어: 실행할 명령을 한줄로 쓴다 (실행권한 필요 chmod 755 backup.sh)
구분자는 스페이스로 구분
'*' 표시는 해당 필드의 모든 시간을 의미.
콤마(,)로 구분하여 여러 시간대를 지정.(ex 11,14 = 11시 2시 )
하이픈(-)로 시간 범위 지정. (ex 5 - 9 = 5시~9시 )
슬래쉬(/)로 시간 간격 지정. ( ex */10 = 10분마다 )
run-parts
01 * * * * root run-parts /etc/cron.hourly
#시간 단위로 실행시키 프로그램입니다.
# /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
# 월단위 입니다.
* * * * * /root/every_1min.sh
- → 매 1분마다 /root/every_1min.sh 를 수행 (하루에 1440회)
15,45 * * * * /root/every_30min.sh
- → 매시 15분, 45분에 /root/every_30min.sh 를 수행 (하루에 48회)
*/10 * * * * /root/every_10min.sh
- → 10분마다 /root/every_10min.sh 를 수행 (하루에 144회)
0 2 * * * /root/backup.sh
- → 매일 02:00에/root/backup.sh 를 수행 (하루에 1회)
30 */6 * * * /root/every_6hours.sh
- → 매 6시간마다 수행(00:30, 06:30, 12:30, 18:30)
30 1-23/6 * * * /root/every_6hours.sh
- → 1시부터 매 6시간마다 수행(01:30, 07:30, 13:30, 19:30)
0 8 * * 1-5 /root/weekday.sh
- → 평일(월요일~금요일) 08:00
0 8 * * 0,6 /root/weekend.sh
- → 주말(일요일, 토요일) 08:00
=> > /dev/null 2>&1 이 무슨 뜻입니까?
지정한 명령어 처리 결과와 발생할지 모르는 에러메시지를 출력하지 않고 모두 버린다는(/dev/null)는
뜻입니다. 만약 결과와 에러를 파일로 저장하려면 /dev/null 대신 파일명을 적어주면 됩니다.