작업 예약 (Automation) : 정해진 시간에 작업이 자동으로 수행
작업 예약 명령어
1) at : 일회용 (한 번 수행 후 반복하지 않음) (실제 사용 빈도 10%)
2) cron : 주기적인 반복 작업을 자동으로 수행 (실제 사용 빈도 90%, 시스템 엔지니어, 소프트웨어 엔지니어 모두 많이 사용함)
at은 서비스 형태로 제공되기 때문에, 가동 여부를 확인해야 한다. (atd)
지금부터 10분 뒤에 그 아래 명시한 작업이 이루어진다는 의미이다.
( 2 hours, 2 days 등도 가능하다. )
Ctrl + D 키를 눌러 작업 완료
작업 예약은 /var/spool/cron/atjobs/a00..... 에 저장된다.
# at -l
# atq
이러한 명령어로 대기중인 작업 목록을 볼 수 있고
# at -d 작업번호
# atrm 작업번호
이러한 명령어로 대기중인 작업 취소를 할 수 있다.
cron 또한 서비스 형태로 제공되기 때문에, 가동 여부를 확인해야 한다.
없다면 systemctl start cron이라는 명령어를 사용해 cron 서비스를 시작하자.
cron에서는 다음과 같은 형식으로 주기적인 작업을 예약할 수 있다.
- 분(0~59)
- 시간(0~23)
- 날짜(1~31)
- 월(1~12)
- 요일(1~5, 1이 월요일이고 5가 금요일, 6이 토요일, 0과 7은 일요일)
- 작업 내용 (절대 경로 사용하기(현재 위치라는 것이 존재하지 않음), 출력의 경우에는 >이나 >> 로 지정해주기)
cron의 스케줄 파일은 vi를 열어 만드는 것이 아니라 crontab이라는 명령어로 만든다.
# crontab -e (edit)
(cron table의 약자이다.)
어쨌든 명령들을 적긴 해야 하기 때문에 문서 편집기를 골라주자. (2번 권장)
*/2 는 2분 단위로 반복하겠다는 의미이다. (0, 2, 4, 6, 8...)
*은 매 시간마다 하겠다는 의미이다.
# crontab -l (list) : cron 스케쥴 확인
# crontab -r (remove) : 스케쥴 파일 제거 (모든 스케쥴이 제거된다. 하나의 스케쥴만 지우려면 -e로 수정하자.)
이렇게 실행되는 것을 볼 수 있다.
매주 일요일 새벽 4:00 /tmp/cron.out 파일을 /tmp/cron.bkp 로 복사하는 스케쥴을 작성하는 것,
매주 월~금 오후 4:00 디스크 사용량 정보(# df -hT) 를 /tmp/diskreport에 저장하는 스케쥴을 작성하는 것도
이렇게 작성할 수 있다.