[Linux] 작업 스케쥴링(at, crond ···)

Jiwon Joung·2023년 1월 3일
0
post-thumbnail

이 시리즈는 쿠버네티스 전문가 양성과정 9기에서 배운 내용과 엔터프라이즈 리눅스 핵심 운영 가이드 책을 따라가며 공부한 내용입니다.

단일성 작업 예약

at 명령 사용

at [옵션] [시간] 

# option
-l : 현재 실행 대기중인 명령의 전체 목록 출력(=atq)
-r *작업 번호* : 현재 실행 대기중인 명령 중 해당 작업 번호 삭제(=atrm)
-m : 출력 결과가 없더라도 작업이 완료되면 메일로 알려줌
-f *파일* : 표준 입력 대신 실행할 명령을 파일로 지정

timespec 예시

  • now + 3min
  • 22:30
  • 11:00 AM
  • Feb 12 2022 15:00
  • 021222

이 때, 실행이 되어도 화면에 출력되지않는다. 예약작업은 atd 데몬에 의해 실행되는데 데몬은 TTY이 지정되지 않기 때문이다. 그래서 대체로는 리다이렉션해서 파일로 저장하거나 tty를 직접 지정하여 출력한다.

at 확인

at으로 등록한 작업은 /var/spool/at 디렉터리에 파일 형태로 저장되어있다가 실행된 후 사라진다.

atq
at -l


주기적인 작업 예약

매주 월요일 이라던가, 매일 12:00 처럼 주기적으로 실행해야하는 작업들이 있다. 이런 작업같은 경우에는 crontab 명령을 이용할 수 있다. 이 작업은 crond 데몬에 의해 작업이 실행된다.

crond 데몬

crond 데몬은 기본적으로 /var/spool/cron 디렉터리에 예약되어있는 작업들을 실행한다. 이 외에도 /etc/crontab/, /etc/anacrontab, /etc/cron.d 디렉토리 하위의 예약 작업들도 실행한다.

주기 작업을 예약하는 방법은 몇가지가 있다.

  1. crontab 명령을 사용해서 등록 → var/spool/cron/유저이름 파일을 편집하게됨
  2. /etc/cron.시간 디렉터리에 쉘 스크립트를 작성한 파일을 직접 등록
  3. /etc/crontab 파일에 직접 등록

crontab 명령 사용

작업 예약

crontab -e를 하면 var/spool/cron/사용자이름 파일이 vi 에디터로 열리고, 수정할 수 있다. crontab 파일은 유저마다 관리된다.

crontab -e

# -> 여기까지 입력시 /tmp 디렉토리에 crontab.[임의문자열] 형태의 임시 파일 생성 & vi 에디터 open

`분 시 일 월 요일 명령어` 형태로 파일에 입력

# 메타문자
* : 무조건 참(True)
- : 범위
, : 다수의 값
/ : 주기
  • 예시 매월 오후 1시부터 5시까지 10분마다 date 명령어를 실행해서 datefile01에 이어쓰기
    */10 13-17 * * * date >> datefile01
    매년 3월, 6월, 9월 2번째 화요일 14시 20분에 /etc/passwd 파일의 내용을 userfile에 갱신하기
    20 14 8-14 3,6,9 2 cat /etc/passwd >userfile

작업 확인

crontab -l

작업 제거

crontab -r 을 쓰면 모든 작업이 삭제되므로 주의할 것

crontab -r

시스템 작업 예약

시스템이 셧다운 되었을떄 crontab 은 작동하지 않는다. 시스템이 셧다운되어도 예약 작업을 수행하여야하는 경우가 있는데, 이런 경우 anacron 은 셧다운때문에 예약 작업이 실행되지 않았을 경우 해당 작업을 기억해 두었다가 다시 부팅되었을 때 작업을 수행한다.

anacron 파일도 역시 /etc/anacrontab 에 저장되어있다.

보면 cron.daily 등 주기적으로 수행되게 예약돼있는 crontab들이 여기에 등록되어있는 것을 볼 수 있다.

0개의 댓글