4장. 서버를 구축하는 데 알아야 할 필수 개념과 명령 (12) - CRON과 AT

728x90
반응형

출처 : https://www.youtube.com/watch?v=y65jjaUt9-Y&list=PLVsNizTWUw7FqN2gq79Cb3R6qkS7mqOJk&index=24

 

 

주기적으로 반복되는 시스템 작업을 예약하는 cron과 일회성 시스템 작업을 예약하는 at 에 대해서 알아본다.

 

cron

  • 주기적으로 반복되는 시스템 작업을 예약하는 소프트웨어
  • 관련된 데몬(서비스)은 crond, 관련 파일은 /etc/crontab 이다.
  • /etc/crontab 밑에는 시간별, 일별, 주별, 월별로 실행될 폴더들이 있고, 해당 폴더들에 지정을 해놓으면 폴더 안의 파일들이 실행이 되게 된다.
  • /etc/crontab의 형식은 "분 시 일 월 요일 사용자 실행명령"으로 이루어져 있다. 분은 0 ~ 59, 시는 0 ~ 23, 일은 1 ~ 31, 월은 1~12, 요일은 0 ~ 6 의 숫자를 입력할 수 있다.
  • /etc/crontab의 example
    • 01 * * * * root run-parts /etc/cron.hourly : 매시 1분에 /etc/cron.hourly 디렉토리 안에 있는 모든 명령을 자동으로 실행한다

 

AT

  • 일회성 시스템 작업을 예약하는 명령
  • 예약 후 한 번만 실행되고 소멸한다.
at 시간 -> 작업 예약
	1. at 일시 명령을 입력 후 Enter 
    ex) at 3:00am tomorrow : 내일 새벽 3시
        at 11:00pm January 30 : 1월 30일 오후 11시
        at now + 1 hours : 1시간 후  
	2. at> 프롬프트에서 예약할 명령을 입력 후 Enter
    3. 예약할 명령을 모두 입력했다면 Ctrl + D
    
at -l : 작업 확인
atrm 작업 번호 : 작업 취소

 

cron과 at 실습

 

실습 목표

  • 매월 15일 새벽 3시 1분에 /home 디렉토리와 그 하위 디렉토리를 /backup 디렉토리에 백업하는 방법을 익힌다.
  • AT의 사용법을 익힌다.

 

cron 실습

실습하기에 앞서 server 가상머신에서 https://cafe.naver.com/thisislinux 교재자료실(리눅스)에서 openrdate~~.rpm 파일을 다운로드한다.

 

 

다운로드한 다음 다운로드 디렉토리로 이동해서 ls 명령을 실행하면, oepnrdate.rpm 파일이 들어있는 것을 확인할 수 있다.

 

 

dnf -y install open*.rpm 명령을 통해 openrdate 를 설치한다.

 

 

systemctl status crond 명령을 입력하면 cron과 관련된 서비스인 crond가 동작하는지를 확인할 수 있다. Active 항목을 보면 active (running) 상태가 나타나는 것을 볼 수 있다.

 

 

gedit 에디터로 /etc/crontab 을 연다.

 

 

01 3 15 * * root run-parts /etc/cron.monthly 를 입력하고 저장하고 gedit을 종료한다. 매월 15일 3시 01분에 /etc/cron.monthly 디렉토리 안에 있는 모든 파일을 실행하라는 의미이다.

 

 

/etc/cron.monthly 디렉토리로 가서 /home 디렉토리에 있는 파일들을 /backup 디렉토리에 자동 백업하도록 하기 위해 touch로 myBackup.sh라는 빈 쉘 파일을 하나 생성하고 chmod 755 myBackup.sh 명령으로 모든 사용자가 실행할 수 있도록 파일 허가권을 변경한다.

 

gedit myBackup.sh 명령을 입력한다.

 

 

#!/bin/sh
set $(date)
fname="backup-$2$3tar.xz"
tar cfJ /backup/$fname /home

를 입력한 다음 저장하고 gedit 에디터를 나간다.

 

현재 날짜를 추출해서 /backup 디렉토리에 /home 디렉토리 전체를 backup-현재날짜.tar.xz 라는 파일로 백업하라는 의미이다.

 

 

백업용 디렉토리를 생성하고 crond 데몬을 재시작한다. 이러면 이제 매월 15일마다 /home 디렉토리를 백업한다.

 

 

한 달을 기다릴 수는 없으므로 강제로 날짜를 바꿔서 실습 결과를 확인해보자.

 

date 011503002029 명령으로 날짜를 2029년 1월 15일 3시로 바꾸고 systemctl restart crond 명령을 입력해서 crond 서비스를 재시작한다.

 

1분 기다리고 ls -l /backup/ 명령을 입력하면 backup 파일이 생성된 것을 확인할 수 있다.

 

마찬가지로 날짜를 2월로 바꾸고 systemctl restart crond 명령을 다시 입력하고 1분 기다리고 ls -l /backup/ 명령을 실행하면 backup 파일이 하나 더 생성된 것을 확인할 수 있다. 즉, 시간이 지나면 backup이 쌓이게 된다.

 

at 실습

 

at 를 실습하기에 앞서 rdate -s time.bora.net 명령을 입력해서 날짜를 다시 되돌려놓는다.

 

 

at 4:00 am tomorrow 명령을 입력해 내일 오전 4시에 실행할 작업들을 예약한다. dnf -y update로 업데이트할 파일들을 업데이트하고 reboot 명령을 통해 재부팅까지 실행시킨다. ctrl + d를 입력해 작업 예약을 완료한다.

 

at -l 명령을 입력하면 현재 내가 예약한 작업을 확인할 수 있다. 만약 해당 예약을 취소하려면 atrm 번호(여기서는 1) 를 입력하면 취소가 된다.

 

 

728x90
반응형