출처 : 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) 를 입력하면 취소가 된다.
'Study > 이것이 리눅스다 with Rocky Linux 9' 카테고리의 다른 글
4장. 서버를 구축하는 데 알아야 할 필수 개념과 명령 (14) - 파이프, 프로세스, 서비스 (1) | 2023.12.21 |
---|---|
4장. 서버를 구축하는 데 알아야 할 필수 개념과 명령 (13) - 네트워크 관련 설정과 명령어와 SELinux (1) | 2023.12.21 |
4장. 서버를 구축하는 데 알아야 할 필수 개념과 명령 (11) - 파일의 압축과 검색, 시스템 설정 (1) | 2023.12.20 |
4장. 서버를 구축하는 데 알아야 할 필수 개념과 명령 (10) - 편리하게 패키지를 설치하는 DNF 명령 (1) | 2023.12.20 |
4장. 서버를 구축하는 데 알아야 할 필수 개념과 명령 (9) - 프로그램 설치를 위한 RPM 명령 (0) | 2023.12.19 |