# cron
- 주기적으로 반복되는 일을 자동으로 실행할 수 있도록 시스템 작업을 예약해 놓은 것
- cron과 관련된 서비스(데몬)는 crond이고, 관련 파일은 /etc/crontab임
> vi로 편집할 수 있고 systemctl 명령어로 cond를 재시작할 수 있음
- /etc/crontab의 형식은 다음과 같음
분 시 일 월 요일 사용자 실행명령
> 분: 0~59
> 시: 0~23
> 일: 1~31
> 월: 1~12
> 요일: 0(일) ~ 6(토)
> *: 신경 안 씀(매월, 매 요일마다..)
00 05 1 * * root cp -r /home /backup
>*: 매월, 모든 요일
> 사용자: root 권한
> cp -r /home/backup 명령을 실행
> /home 디렉터리가 통째로 /backup 디렉터리에 복사됨
- cron의 경우 주기적으로 실행할 내용을 디렉터리에 넣어놓고 작동함
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
03 4 * * * root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
* run-parts 디렉터리 명령어는 디렉터리 안의 명령을 모두 실행
- 실습: 매월 15일 새벽 3시 1분에 /home 디렉터리와 그 하위 디렉터리를 /backup 디렉터리에 백업하자
1) 시간 설정을 위해 아래 명령어를 통해 관련 패키지를 다운 받음
> wget http://download.hanbit.co.kr/centos/8/openrdate-1.2-14.fc30.x86_64.rpm
> dnf -y install openrdate*.rpm
2) systemctl status crond 명령
> crond가 동작하는지 확인
> systemctl 명령은 서비스 시작, 중지, 상태 확인 등을 할 수 있는 명령어
3) vi /etc/crontab 명령을 입력해 아래 사진과 같이 입력
> 매월 15일 새벽 3시 1분에 /etc/cron.monthly 디렉터리 안의 모든 파일을 실행하라는 의미
4) /etc/cron.monthly/ 디렉터리에 메시지를 출력하는 스크립트 파일 (myBackup.sh)을 만들고,
속성을 실행할 수 있게 바꿈
5) vi myBackup.sh 명령을 입력하고 파일 안에 아래와 같이 내용을 입력한 후 저장하고 닫음
> 현재 날짜를 추출해서 /backup 디렉터리에 backup-현재날짜.tar.xz라는 파일로
/home 디렉터리 전체의 백업 파일을 생성하라는 의미
6) 백업용 디렉터리를 생성하고 crond 데몬을 재시작함
7) 날짜를 강제로 바꾸고 테스트
# at
- cron은 주기적으로 반복되는 작업을 예약하는 것이지만, at 명령어는 일회성 작업을 예약하는 것임
- 예약해두면 한 번만 실행되고 소멸됨
- 예약
at 3:00am tomorrow
at 11:00pm January 30
at now + 1 hours
- at> 프롬프트에 예약 명령어 입력 후 enter
- 완료되면 ctrl + D
- 확인: at -l
- 취소 atrm 작업 번호
- 실습: at 명령어로 내일 새벽 4시에 시스템을 최신 패키지로 업데이트하고, 완료되면 시스템을 재부팅하도록 예약하고, 예약된 내용을 삭제해보자
[출처]
- 숙명여자대학교 서버운영및보안 수업 - 이종우 교수님
- 이것이 우분투다 (개정판) - 우재남 지음
'Study > Linux' 카테고리의 다른 글
[Linux] 파이프, 필터, 리디렉션 (0) | 2021.10.25 |
---|---|
[Linux] 네트워크 관련 설정과 명령어 (0) | 2021.10.25 |
[Linux] 시스템 설정 (0) | 2021.10.24 |
[Linux] 파일 위치 검색 (0) | 2021.10.24 |
[Linux] 파일 압축과 묶기 (0) | 2021.10.23 |