단일성 예약
at 명령어 사용
at [timespec] 으로 작업 예약을 시작할 수 있다.
at> 예약하고자 하는 명령어 작성
at> 컨트롤 d f 를 눌러서 작업 예약을 하면 된다.
at -l or atq 명령어
작업 예약 확인하는 명령어이다.
at -c [예약번호] 명령어
작업 내용을 확인하는 명령어이다.
atrm [예약번호] 명령어
작업 예약을 취소하는 명령어이다.
timespec 작성 요령
at [시간] [날짜] 순으로 기입
22년 2월 23일 오전 10시 기준
지금으로부터 2시간 뒤 작업
at now +2hour (분 - min, 시 - hour)
오후 4시 작업
at 16:00
at 04:00 PM
at teatime
at 16:00 2/23/22 (월,일,년)
at 16:00 23-02-22
at 04:00 PM today
at teatime today
새벽 12시 작업
at 00:00
at 12:00 AM
내일 정오 작업
at 12:00 PM 2/24/22
at 12:00 PM 24-02-22
at noon tomorrow
/usr/share/doc/at-3.1.13/timespec 참조
at 실습
# 1.3분 뒤에 ps -ef 명령어를 실행해서 psfile01에 저장되도록 설정
$ at now +3min
at> ps -ef > psfile01
at> ctrl + d
# 2.23년 8월 1일에 date 명령어를 실행해서 메일로 오도록 설정
$ at 00:00 8/1/23 or 23-08-23
at> date
at> ctrl + d
# 3.오늘 오후 12시에 cal 명령어를 실행해서 메일로 오도록 설정
$ at 12:00 today
at> cal
at> ctrl + d
# 4.내일 오후 4시에 ps -ef 명령어를 실행해서 psfile02에 저정하도록 설정
$ at 16:00 tomorrow
at> ps -ef > psfile02
at> ctrl + d
# 5.작업 예약을 확인하시오.
$ atq or at -l
반복성 예약
crond 서비스를 이용하면 된다.
crontab 명령어
crontab -e : 작업예약
crontab -l : 작업예약 목록 확인
crontab -r : 작업예약 취소(모든 작업 취소)
crontab 파일명 : 다른 파일에 만들어놓은 작업을 불러올 수 있음.
crontab 작성 요령
1월1일 새벽12시 reboot
0 0 1 1 * reboot
12월 15일 오후 3시부터 오후 6시까지 15분마다 date
*/15 15-18 15 12(or Dec) * date
매월 첫번째 월요일 오후 1시 정각에 date
0 13 1-7 * 1(Mon) date
매분마다 date명령어를 datefile에 기입하시오.(이어쓰기로)
* * * * * date >> datefile
시스템 cron
cron 과 anacron 으로 2가지 종류가 있음.
일반 cron은 시스템이 켜져 있는 동안에만 해당 시간의 작업을 수행
해당 시간에 시스템이 다운되어 있으면 수행하지 않음.
/etc/crontab 파일을 양식지로 사용해서 /etc/cron.d/ 다른 파일 저장으로 등록
기존 사용자 cron과 다른 점 cron 예약시 사용자 계정이 들어감.
anacron은 작업 해당시간에 시스템이 꺼져 있어서 실행하지 못하더라도 시스템이 켜지면 일정시간 대기후에 해당 작업 실행
crontab 실습
# 1.매년 1월 첫번째 일요일 자정에 재부팅이 되도록 설정
$ crontab -e
0 0 1-7 1 0 reboot
# 2.매월 오후 1시부터 5시까지 10분마다 date 명령어를 실행해서
# datefile01에 이어쓰기로 저장하도록 설정
$ crontab -e
*/10 13-17 * * * date >> datefile01
# vi 편집기로 test 파일에 다음 내용 설정
# 3.매년 3월, 6월, 9월 2번째 화요일 14시 20분에
# /etc/passwd 화일의 내용을 userfile에 갱신하도록 설정
$ vi test
20 14 8-14 3,6,9 2 cat /etc/passwd > userfile
# 4.매주 수~금 오후 5시에 /var/log/secure의 내용 중
# 오전 8시 정각부터 오후 5시59분까지의 내용을 securefile에 갱신하도록 설정
$ crontab -e
0 5 * * 3-5 egrep '^... .. (0[8-9]|1[0-7])' /var/log/secure > securefile
# 또는
0 5 * * 3-5 grep -e '^... .. 0[8-9]' -e '^... .. 1[0-7]' /var/log/secure > securefile
# grep 을 통해서 검색할 때
# 08~17
# 08 09 10 11 12 13 14 15 16 17 데이터만 나오도록 해야함
# [01][0-8] 로 검색하게 되면 원하지 않는 시간대가 나옴
# 00 01 02 03 04 05 06 07 18
# 5.3,4번의 작업을 파일로 예약하시오.
$ crontab -l
$ crontab test
# 6.작업 예약을 확인하시오.
$ crontab -l
# 7. 3번 작업만 삭제하시오.
$ crontab -e
3번 작업 삭제
:wq
$ crontab -l
# 8. 모든 작업을 삭제하시오.
$ crontab -r