bbbb's blog
[linux] 작업 스케줄링 본문
작업 스케줄링
단일성 작업 예약
at
- 단일성 작업 예약 도구
- 시스템 데몬 atd로 프로세스 제어
- at는 백그라운드에서 동작, 제어 터미널 x
at 사용을 위한 선행작업
yum -y install at
systemctl status atd
systemctl start atd
systemctl status atd # running 확인
at를 사용한 파일 생성
at now +1min #현재 시간부터 1분뒤 실행
at> echo "test" > text.txt #작업 입력
at> <EOT> #cntl+D, 직접 입력하는 것이 아님. (at 입력 끝)
기준 시간이 될 수 있는 문자열 at 예제
at teatime tomorrow #내일 오후 4시에 실행. teatime은 16시을 의미한다
at noon +4 days #4일뒤 정오에 실행
at 5pm august 3 2022 #정확한 날짜에 맞춰서 예약 가능 2022년 8월 3일 오후 5시
작업 예약 확인
at -l
2 Tue Jan 18 16:00:00 2022 a root
3 Fri Jan 21 12:00:00 2022 a root
4 Wed Aug 3 17:00:00 2022 a root
예약 작업 제거
atrm 2 #작업 번호로 제거
at -l
3 Fri Jan 21 12:00:00 2022 a root
4 Wed Aug 3 17:00:00 2022 a root
주기적인 작업 예약
- 예약된 작업을 반복 실행
- crond 데몬이 작업을 제어(crontab 구성 파일을 해석해서)
crontab 파일 확인
vim /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# For details see man 4 crontabs
# 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
* * * * * root echo "test" > test.txt
#root 사용자가 echo "test" > test.txt 실행
#매분 매시 매일 매월 매요일마다 실행 -> 1분마다 계속 실행
#현재 시간을 기준으로 실행(지금부터)
#분자리에 *가 표기될 경우 현재 시간 기준
* * * * * user1 echo "test" > test.txt
#/home/user1 디렉토리에서 echo "test" > test.txt 실행
#매분 매시 매일 매월 매요일마다 실행 -> 1분마다 계속 실행
0 1 * * * root echo "test" > test.txt
#매일 오전 1시에 실행
0 1 * * 0 root echo "test" > test.txt
#매월 매일 일요일 오전 1시 0분에 실행
0 1 1 * 0 root echo "test" > test.txt
#매월 1일 일요일 오전 1시에 실행 (1일이 월요일이면 실행 x)
0 1 1 2 0 root echo "test" > test.txt
#2월 1일 일요일 오전 1시에 실행
0/3 1 * * * root echo "test" > test.txt
#2월 1일 일요일 오전 1시에 3분 마다 실행 (01:00 ~ 01:59)
#2시가 되면실행 x
# * 1 * * * 이면?
# 매월 매일 매요일마다 1시 매분마다 명령어 실행
# 분에 * 표시가 되어있을 경우 *(/1)
crontab
- 일반 사용자의 경우 crontab 명령어 사용
crontab -e
- 반복작업 생성
- /etc/crontab에 작성하는 것과 똑같이 작성하면 됨
- 반복작업 제거도 가능(vim과 같은 형식)
반복 작업 예약 확인
crontab -l
모든 반복 작업 제거
crontab -r #모든 반복 작업 제거
/etc/cron.d
- cron.d 디렉토리 밑에 반복 작업을 분류하여 생성 가능
/etc/anacrontab
- 시스템이 꺼져 있거나 절전모들로 인해 실행되지 않을 경우 시스템이 준비되면 작업 실행
... #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
- 기간(일)
- @daily는 정수 1과 동일, 매일 실행 됨을 의미
- @weekly는 정수 7과 동일, 매주 실행 됨을 의미
- @monthly는 매달 실행 됨을 의미(달마다 일수가 다름)
- 지연 (분)
- 시스템이 준비된 후 작업을 시작하기 전에 crond 데몬이 대기해야
하는 시간
- 시스템이 준비된 후 작업을 시작하기 전에 crond 데몬이 대기해야
- 작업 식별자
- 작업이 시작되는 고유 이름
- 명령
- 실행할 명령
'SE > linux' 카테고리의 다른 글
| [linux] ACL (0) | 2022.01.18 |
|---|---|
| [linux] 파일 시스템 (0) | 2022.01.17 |
| [linux] 패키지 관리 도구 (0) | 2022.01.17 |
| [linux] SSH (0) | 2022.01.14 |
Comments