컬쥐네 다락방
작업 예약 - cron 본문
리눅스 작업 예약
단일성 예약과 반복성 예약으로 나뉜다.
단일성 예약 :
특정 시기에 한번 작업을 시행한다.
atd라는 서비스를 이용하는 작업. atd 서비스는 제어할 수 있는 터미널을 지정받지 못한다.
따라서 결과를 파일 저장이나 메일로 받아야한다.
출력하는 명령어를 수행하게 되면 화면에 띄울 수 없다.
출력하는 명령어의 결과를 메일로 보내오거나 라디이렉션을 이용해서 파일로 저장해야 한다.
at 명령어 활용
at timespec
at> 프롬포트가 나오면 해당 작업 작성 후 엔터
at> ctrl + d 를 누르면 <EOF>가 뜨면서 완료
at -l 또는 atq : 예약 확인
at -c 예약번호 : 작업 내용 확인
atrm 예약번호 : 작업 예약 취소
[root@localhost ~]# at 11:10
at> date
at> <EOT>
job 1 at Thu Feb 24 11:10:00 2022
[root@localhost ~]# at -l
1 Thu Feb 24 11:10:00 2022 a root
[root@localhost ~]# at -c 2022
Cannot find jobid 2022
timespec 작성 요령
at 시간 날짜 순으로 기입한다.
22년 2월 23일 오전 10시 기준, 지금으로부터 2시간 뒤 작업을 원한다면,
at now +2hour
오후 4시 작업은
at 16:00
at 04:00 PM
at teatime
at 16:00 2/23/22 (월,일,년)
at 16:00 22-02-23
at 04:00 PM today
at teatime today
새벽 12시 작업
at 00:00
at 12:00 AM
timespec은 /usr/share/doc/at-3.1.13/timespec 을 참조하면 된다.
주기적 작업
주기에 맞춰 해당 작업을 수행한다.
crond 서비스를 이용하는 작업이다. (여기서 cron은 주기적 작업, d는 데몬 서비스. )
atd 서비스와 같이 제어할 수 있는 터미널을 지정받지 못해 결과를 파일 저장이나 메일로 받아야한다.
cron은 사용자 cron과 시스템 cron으로 나뉜다.
사용자 cron
사용자 cron은 crontab 명령어를 통해서 작업을 등록한다
crontab syntax
crontab -e : cron 예약창 편집
crontab -l : cron 예약 확인
crontab -r : 모든 cron 예약 삭제
crontab 특정파일명 : 특정파일 안에 있는 cron 예약들을 crontab에 덮어쓰기로 등록
cron은 일반 사용자에게 권한이 없지만, crontab에 setuid가 설정되어 있기에 사용가능.
[root@localhost ~]# ls -dl /var/spool/cron
drwx------. 2 root root 6 4월 11 2018 /var/spool/cron
[root@localhost ~]# ls -l /bin/crontab
-rwsr-xr-x. 1 root root 57576 4월 11 2018 /bin/crontab
cron의 timespec 설정법
분,시,일,월,요일,command :
분 (0-59), 시(0-23), 일(1-31), 월(1-12), 요일(0-7 : 0,7이 일요일을 뜻함) , command 순으로 설정
timespec으로 설정한 기간중 각 조건의 교집합에 해당하는 시간에만 실행된다.
ex) 1월 1일-3일로 설정하고 요일을 월요일만 했다면, 1일부터 3일 사이에 월요일만 실행.
특수 문자 :
* : 모두 해당한다
- : 범위
/ : 주기
, : 연속되지 않은 다수
다양한 timespec 사용 예시
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(or mon) date
매분 date 명령어를 datefile에 기입하시오 (이어쓰기로)
* * * * * date >> datefile
시스템 cron
cron 과 anacron으로 2가지 종류가 있다.
일반 cron은 시스템이 켜져 있는 동안에만 해당 시간의 작업을 수행하고 시스템이 다운되어 있으면 수행하지 않는다.
/etc/crontab 파일을 양식지로 사용해 /etc/cron.d/ 다른 파일 저장으로 등록한다.
기존 사용자 cron과 다른 점은 cron 예약시 사용자 계정이 들어간다.
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
anacron은 작업 해당 시간에 시스템이 꺼져 있어서 실행하지 못하더라도 시스템이 켜지면 일정 시간 대기 후 해당 작업을 수행한다.
/etc/anacrontab
SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# the maximal random delay added to the base delay of the jobs
RANDOM_DELAY=45
# the jobs will be started during the following hours only
START_HOURS_RANGE=3-22
#period in days delay in minutes job-identifier command
1 5 cron.daily nice run-parts /etc/cron.daily
7 25 cron.weekly nice run-parts /etc/cron.weekly
@monthly 45 cron.monthly nice run-parts /etc/cron.monthly
'클라우드 > 리눅스' 카테고리의 다른 글
리눅스 | PV, VG, LV (0) | 2022.02.25 |
---|---|
리눅스 | 시스템 디스크 / 파티션, 스왑 메모리 (0) | 2022.02.24 |
vi 에디터 명령어 (0) | 2022.02.21 |
파일 입출력 명령어 (0) | 2022.02.18 |
리눅스 시스템 명령어 (0) | 2022.02.16 |