Linux

11. 스케쥴링(Scheduling)

jih0ssang 2023. 9. 18. 16:49

스케쥴링

 

at

일회성 작업 예약 (단일성 작업)
한번 실행하고 종료되는 작업

 

  at [option] time-spec

at 시간 지정 예
at 14:10
at 11:00 am
at 11:00 today  (오늘일경우) 
at 15:00 feb 23 2022
at 월일년  at  022322
at 년-월-일   at 220224
at 일월년   at 250222
at  now +5min  5분뒤 실행

at 3:00am tomorrow
at 11:00pm January 30
at now +1hours

at 예약 확인
at -l :작업번호 확인가능


at 예약 삭제
atrm 작업번호

$ at now +5min
at> ps -ef > ~/pslist
at> ctrl+d ( ==> <EOT>)

실행결과가 화면에 출력되지 않음.
예약작업은 atd 데몬에 의해서 실행됨
명령은 표준 출력(터미널 화면)으로 출력되지 않음 -> 리다이렉트

작업 확인: atq,  또는 at -l: 예약 확인
작업 번호,, 실행되는 날짜, 작업의 대기 큐(queue) , 작업을 실행할 사용자가 출력됨.
큐는 a~z, A~Z 총 52개 (우선순위포함, a가 앞에있을수록 우선순위가 높음)
/var/spool/at 디렉토리에 존재하며 실행권한이 설정되어 있음 , 
 쉘에 적용될 환경 변수, 실행할 명령어


세션정보 확인하는 명령어 : netstat -antp

 

 

 

주기적인 작업 예약
특정 주기마다 실행되는 작업

crond 데몬

작업은 /var/spool/cron에 사용자이름으로 저장됨. (제어터미널을 가지지 않음)


시스템 작업 예약
cron : 매분마다 작업 확인하여 수행
anacron : 하루에 한번 작업 확인하여 수행 , 시스템이 셧다운되어 예약 작업이 실행되지 않았을 경우, 실행되지 않은 예약 작업을 확인하여 시스템이 다시  작업 수행함
/etc/crontab  : 작업편집 방법 확인 가능
/etc/cron.d

 

$ cat  /etc/crontab
SHELL = /bin/bash
PATH= /sbin:/bin:/user/sbin:/user/bin

# 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 7도 있음
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed

               *   *  *   *     *       user-name    run-parts  command /etc/cron 디렉토리
형식 :    분 시 일 월  요일   사용자계정      /etc/cron 디렉터리 안 명령 실행명령어 ex) /etc/cron.hourly

               메타문자 사용
메타 문자 : * (true)  , - (범위 지정),    , (다수 지정) ,  / (조건에 대한 주기)



crontab -e : cron 예약 작업 편집  (이거 먼저 실행하고. 새 예약작업 수행)
crontab -l : cron 예약 작업 확인
crontab -r : cron 사용자 예약 전체 삭제


crond가 동작하는지 확인
systemctl status crond


ls /etc/cron.d
/etc/cron.d:
total 12
-rw-r--r--. 1 root root 128 Aug 9 2019 0hourly
-rw-r--r--. 1 root root 
cat /etc/cron.d/0hourly
ls -l /etc/cron.hourly/*
/etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly, /etc/cron.monthly 디렉토리 존재
cat /etc/anacrontab 에 의해서 주기적으로 실행됨.

period in days : 매크로 작업 수행 간격
delay in miinutes 작업과 작업사이의 간격 지정
job-identifier : 로그 파일에서 사용할 작업 고유 이름 지정
command : 동작 시킬 켱령어 (스크립트나 쉘 명령어도 가능)
@daily=1, @weekly=7, @monthly=월마다

데몬 : 서버역할을 하는 프로그램 (보통 클라이언트에게 서비스 하기 위해 백그라운드로 계속 동작중입니다.)

 

/etc/cron.daily:  매일 동작하는 것
/etc/cron.hourly: 매시간 실행되는것
/etc/cron.monthly: 매달 실행되는 것
/etc/cron.weekly: 매주 실행되는것


작업의 기본 지연에 추가적인 최대임의 지연

RANDOM_DELAY=45 최대지연 45분까지
START_HOURS_RANGE=3-22   3시~22시까지. (밤 10시까지)

'Linux' 카테고리의 다른 글

13. swap과 mount  (0) 2023.09.18
12. 하드디스크 구조  (0) 2023.09.18
10. ACL(Access Control List, 접근제어목록)  (0) 2023.09.18
9. 아카이브(archive)와 압축  (0) 2023.09.18
8. 프로세스 관리 (Process Management)  (0) 2023.09.18