이 시리즈는 쿠버네티스 전문가 양성과정 9기에서 배운 내용과 엔터프라이즈 리눅스 핵심 운영 가이드 책을 따라가며 공부한 내용입니다.
at [옵션] [시간]
# option
-l : 현재 실행 대기중인 명령의 전체 목록 출력(=atq)
-r *작업 번호* : 현재 실행 대기중인 명령 중 해당 작업 번호 삭제(=atrm)
-m : 출력 결과가 없더라도 작업이 완료되면 메일로 알려줌
-f *파일* : 표준 입력 대신 실행할 명령을 파일로 지정
이 때, 실행이 되어도 화면에 출력되지않는다. 예약작업은 atd 데몬에 의해 실행되는데 데몬은 TTY이 지정되지 않기 때문이다. 그래서 대체로는 리다이렉션해서 파일로 저장하거나 tty를 직접 지정하여 출력한다.
at
으로 등록한 작업은 /var/spool/at
디렉터리에 파일 형태로 저장되어있다가 실행된 후 사라진다.
atq
at -l
매주 월요일 이라던가, 매일 12:00 처럼 주기적으로 실행해야하는 작업들이 있다. 이런 작업같은 경우에는 crontab
명령을 이용할 수 있다. 이 작업은 crond 데몬에 의해 작업이 실행된다.
crond 데몬은 기본적으로 /var/spool/cron
디렉터리에 예약되어있는 작업들을 실행한다. 이 외에도 /etc/crontab/
, /etc/anacrontab
, /etc/cron.d
디렉토리 하위의 예약 작업들도 실행한다.
주기 작업을 예약하는 방법은 몇가지가 있다.
crontab
명령을 사용해서 등록 → var/spool/cron/유저이름
파일을 편집하게됨/etc/cron.시간
디렉터리에 쉘 스크립트를 작성한 파일을 직접 등록/etc/crontab
파일에 직접 등록crontab -e를 하면 var/spool/cron/사용자이름
파일이 vi 에디터로 열리고, 수정할 수 있다. crontab 파일은 유저마다 관리된다.
crontab -e
# -> 여기까지 입력시 /tmp 디렉토리에 crontab.[임의문자열] 형태의 임시 파일 생성 & vi 에디터 open
`분 시 일 월 요일 명령어` 형태로 파일에 입력
# 메타문자
* : 무조건 참(True)
- : 범위
, : 다수의 값
/ : 주기
*/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들이 여기에 등록되어있는 것을 볼 수 있다.