[Linux] 작업 예약

728x90

단일성 예약

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
728x90