시스템을 운영하다 보면 특정 시간에 백업을 하거나, 일시적으로 어떤 작업을 돌려야할 때가 있다. 이럴 때 쓰는 게 cron 과 at 이다.
cron
금융권 IT 에서 일을 하다보니, 고객이 금융서비스를 사용하지 않는 시간대에 백업 등의 업무를 많이 한다. (사실 실제로는 이런 명령어를 써서 백업을 하진 않는다. 고가(?)의 솔루션을 써서 안전하게 한다...) 이 때, 주기적으로 반복되는 어떠한 작업을 자동으로 실행할 수 있도록 시스템 작업을 예약해 놓는 것을 cron 이라고 한다.
cron 과 관련된 데몬(서비스)은 crond 이고 관련 파일은 /etc/crontab이다.
/etc/crontab의 형식은 아래와 같다.
분 시 일 월 요일 사용자 실행명령
분은 0~59, 시는 0~23, 일은 1~31, 월은 1~12, 요일은 0~6의 숫자가 올 수 있다.
아래 예시를 보면서 이해해 보자.
00 03 * * root cp -r /home /backup
해당 의미는 매일 새벽 3시에 /home 디렉토리 내부를 /backup 디렉토리로 통째로 복사하라는 의미이다.
여기서 *은 매월과 모든 요일을 의미한다.
또 하나 알아 둬야할게 cron은 주기적으로 실행할 내용을 디렉터리에 넣어놓고 동작한다. 해당 디렉토리 구조는 아래와 같으니 참고하기 바란다. 해당 디렉토리는 /etc/crontab 파일이 시간별, 일별, 주별, 월별로 호출하는 디렉토리를 보여준다.
그래서 우리는 아래와 같은 내용을 입력함으로써, 시간별, 일별, 주별, 월별로 호출하도록 할수 있다.
30 * * * * root run-parts /etc/cron.hourly
30 03 * * * root run-parts /etc/cron.daily
30 03 * * 0 root run-parts /etc/cron.weekly
30 03 1 * * root run-parts /etc/cron/monthly
의미는 위에 설명한 것으로 충분히 해석이 가능할 것으로 알고 설명을 생략하도록 하겠다. 하나만 설명하고 넘어가자면 run-parts 명령어는 다음에 나오는 디렉터리 안의 명령을 모두 실행한다는 의미이다. 이 정도만 알면 해석이 가능하리라 본다.
cron 실습
상황 : 매월 10일 새벽 5시에 /home 디렉터리와 그 하위 디렉터리를 /backup 디렉터리에 백업하기
1) systemctl status crond 명령어로 crond가 동작하는지 확인하기
2) gedit 이나 vi로 /etc/crontab 을 열어 , 맨 아래에 '00 05 10 * * root run-parts /etc/cron.monthly' 를 추가하고 ,저장
3) /etc/cron.monthly/ 디렉터리에 메시지를 출력하는 스크립트를 만들고, 속성을 실행할 수 있게 바꾼다.
4) gedit 이나 vi로 아래내용 편집 후 저장
5) 백업용 디렉터리 생성하고, crond 데몬 재시작
이렇게하면 끝.... 이지만 그래도 결과를 확인하긴 해야할 것 같아서 .. ! 강제로 날짜를 바꿔보자.!
그리고 나서 !! 1~2 분 기다려보면 ... ㅎㅎ
이렇게 백업 파일이 남게 된다 !
at
cron 은 주기적으로 반복되는 작업을 예약하는 것인데, 한번씩 일회성으로 작업을 예약해줘야할 때가 있다. 이때 쓰는게 바로 at이다. 사용법은 아래와 같다.
- 예약 : at 시간
예) at 4:00am tomorrow -> 내일 새벽 4시
at 10:00pm January 15 -> 1월 15일 오후 10시
at now +3 hours -> 3시간 뒤
- at> 프롬프트에 예약 명령어 입력 후 Enter 입력
- 완료 시 ctrl + D
at 실습
상황 : 내일 새벽5시에 시스템을 최신 패키지로 업데이트하고 , 완료되면 시스템을 재기동하는 작업 예약
위에서 설명 안한것이 있다면 atrm 인데 이건 작업을 삭제하는것이니 참고로 알아두자 !
끝.
'Develop > Server' 카테고리의 다른 글
[Linux] 리눅스 네트워크 관련 명령어 및 파일 정리 (1) | 2020.08.07 |
---|---|
[Linux] 네트워크 필수 개념 정리 (0) | 2020.07.31 |
[linux] 리눅스에서 파일 위치 검색하기 (1) | 2020.07.27 |
[Linux] 리눅스 파일 압축 및 묶기 (1) | 2020.07.24 |
[Linux] CentOS에서 Yum 사용하여 패키지 설치하기 (0) | 2020.07.23 |
댓글