26장. cron, at, anacron
학습목표
- 반복되는 작업과 예약작업을 수행하기 위한 명령어의 사용법을 익힌다.
● cron
- 주기적으로 반복되는 작업을 수행
- crond 라는 데몬으로 작동 (기본 설치됨)
● 사용자별 crontab 설정
- 일반 사용자의 자기 홈디렉토리 백업등의 용도로 사용
- vi 편집기가 구동됨
- 명령어
→ 편집 : # crontab -e
→ 확인 : # crontab -l
→ 삭제 : # crontab -r
- /var/spool/cron/ 사용자명으로 저장됨
● at
- 일시적으로 한번만 수행되는 작업을 예약
- atd 라는 데몬으로 작동
- 명령어
→ 예약 : # at <시간>
☞ 예) # at 3:00am tomorrow -> 내일 새벽 3시
☞ # at 11:00pm January 30 -> 1월 30일 오후 11시
☞ # at now + 1 hours -> 1시간 후
→ at> 프롬프트에 예약 명령어 입력 후, Enter
→ 완료되면 Ctrl + d
→ 확인 : # at -l
→ 취소 : # atrm <작업번호>
● anacron
- cron과 유사하지만, 시스템이 꺼져있을 경우 있으면 해당작업이 정해진 시간에
수행되었는지를 확인하고 수행한 적이 없으면 실행
- /etc/anacrontab 파일로 저장
[실습]
● crontab 설정
● at 설정
● anacron 설정
/etc/crontab 파일에는 기본적으로
시간별, 일별, 주별, 월별로 설정이 다 되어있다.
< crontab 설정 >
vi /etc/crontab
분 시 일 월 주 root run-parts /etc/cron.*
01 * * * * root run-parts /etc/cron.hourly
매 시간 1분마다 실행
02 4 * * * root run-parts /etc/cron.daily
매일 4시 2분에 실행
22 4 * * 0 root run-parts /etc/cron.weekly
매주 일요일 4시 22분에 실행
42 4 1 * * root run-parts /etc/cron.monthly
매월 1일 4시 42분에 실행
ls /etc/cron.daily
기본적으로 매일 실행되는 실행파일들을 볼 수 있다.
cd /etc/cron.daily
touch abc.sh
vi abc.sh
/etc/cron.daily 폴더로 이동해서
abc.sh 이란 쉘 파일을 만들어보자.
아직 쉘은 배우진 않았지만 따라하면서 해본다.
위와 같은 아주 간단한 프로그램으로 설정
ls -l 명령으로 확인해보면 abc.sh 파일이 생성되었다.
하지만 실행할 수 있는 권한이 없기 때문에 권한을 수정한다.
chmod a+x abc.sh
a+x는 모든 유저에게 실행할 수 있는 권한을 부여한 것이다.
cat /etc/crontab
현재 지정한 저 시간
매일 4시 02분이 되면 자동적으로 abc.sh 파일이 실행되게 된다.
시간을 바꾸고싶으면 저 부분을 수정하면 된다.
< at 설정 >
at 3:00am tomorrow
내일 새벽 3시에 작업할 내용을 예약한다.
프롬프트가 at> 으로 바뀌면 예약할 명령을 입력하면 된다.
예를 들어서 /root/aa.dat 파일을 bb.dat 파일로 복사해야한다고 하자.
at> cp /root/aa.dat bb.dat
at> Ctrl + D
모든 작업이 다 끝났으면 Ctrl + D를 눌러 빠져나온다.
그리고 예약작업을 확인하려면 at -l 명령을 내리고
예약한 작업을 삭제하려면 atrm <작업번호> 명령을 내린다.
여기선 atrm 1 이다.
< anacron 설정 >
cat /etc/anacrontab
1 65 cron.daily run-parts /etc/cron.daily
컴퓨터가 꺼져있어도 다시 켰을때
매일 /etc/cron.daily에 있는 실행파일들이 실행되었는지 체크를 하고
실행이 안되어있는 경우에는 65분 후에 실행
7 70 cron.weekly run-parts /etc/cron.weekly
마찬가지로 매주 /etc/cron.weekly에 있는 실행파일들이 실행되었는지 체크를 하고
실행이 안되어있는 경우에는 70분 후에 실행
30 75 cron.monthly run-parts /etc/cron.monthly
매월 /etc/cron.monthly에 있는 실행파일들이 실행되었는지 체크를 하고
실행이 안되어있는 경우에는 75분 후에 실행