[Linux/CentOS] 시간 예약 서비스 - cron, at
System/OS - Linux

[Linux/CentOS] 시간 예약 서비스 - cron, at

728x90

cron

주기적으로 반복되는 일을 자동으로 실행할 수 있도록 시스템 작업을 예약해 놓는 것이다. (= cron)

cron 과 관련된 서비스(데몬)을 crond 라고 한다. 이와 관련된 파일은 /etc/crontab 이다. 

분(00~59) 시(00~23) 일(1~31) 월(1~12) 요일(0~6) 사용자 실행명령

요일은 0을 일요일로 두고 이어진다.

사용자는 해당명령을 실행할 사용자를 지정해준다.

시간 조건에 상관 없을 때는 '*'로 표시한다.

 

/etc/crontab

/etc/crontab 파일에 반복하고 싶은 작업에 대한 세부적인 사항들을 적어주면 된다.

 

/etc/crontab 파일과 관련된 디렉터리들

주기적으로 실행할 내용을 디렉터리 넣고 작동한다.

/etc/crontab 파일이 시간별, 일별, 주별, 월별로 호출하는 디렉터리들이다. 

>> 00 * * * * root run-parts /etc/cron.hourly 와 같은 식으로 사용할 수 있다.

 


at

일회성 작업에 대한 예약을 해주는 서비스다.

 

예약

# at 시간

입력하고 나면 

at> 

라고 프롬프트가 뜨면 예약할 명령어들을 입력하고 [Enter]를 누르고 예약할 명령어들을 모두 입력하고 난 후에는 [Ctrl + D]를 누른다.

 

ex) at 3:00am tomorrow

      at 11:00pm January 30

      at now + 1 hours

 

확인

# at -l

예약한 명령어들에대한 작업번호를 확인할 수 있다.

 

취소

# atrm 작업번호


실습

실습 시작 전

시간 설정과 관련된 패키지를 설치한다.

# wget http://download.hanbit.co.kr/centos/8/openrdate-1.2-14.fc30.x86_64.rpm

# dnf -y install openrdate*.rpm

 

1. crond 서비스의 상태확인

# systemctl status crond

>> crond 서비스가 현재 동작중인지 상태를 확인한다. 그 결과 active(running) 하다는 것을 확인헀다.

 

2. cron 설정

# gedit /etc/crontab

'01 3 15 * * root run-parts /etc/cron.monthly'라고 적어준다.

>> 매월 15일 오전3시 1분에 /etc/cron.monthly 디렉터리 안의 모든 파일을 실행(run-parts)한다.

 

3. /etc/cron.monthly

# touch myBackup.sh

# chmod 755 myBackup.sh

>> myBackup.sh 파일을 생성하고 해당 파일의 허가권을 소유자에게는 모든 권한을 허락하고 그룹과 그 외 사용자들에게는 읽기와 실행 권한만을 허락한다.

# gedit myBackup.sh

>> myBackup.sh의 내용 = 현재 날짜를 추출해서 /backup 디렉터리에 backup-현재날짜.tar.xz라는 파일로 /home 디렉터리 전체의 백업 파일을 생성하라는 의미이다. 

# mkdir /backup

# systemctl restart crond

>> 백업용 디렉터리 backup을 생성하고 crond 데몬을 재시작한다.

 

4. 날짜를 바꿔 테스트

# date 011503002027

# systemctl restart crond

>> 2027년 01월 15일 03시 00분으로 날짜를 강제로 바꾸고 crond 서비스를 재시작한다.

# ls -l /backup

>> 위의 명령을 실행하고 1분이 지난 후 backup디렉터리를 찾아보면 crond 서비스에서 예약한 내용이 실행되었음을 확인할 수 있다.


at 명령어 실습

# rdate -s time.bora.net

>> 시간을 다시 원래 시간으로 되돌린다.

 

1. at 명령어로 예약

# at 4:00am tomorrow

at> dnf -y update

at> reboot

[Ctrl] + [D]

>> 다음날 새벽 4시에 시스템을 최신 패키지로 업데이트하고 시스템을 재부팅하도록 예약했다.

 

2. 예약 작업 확인

# at -l

>> at 명령으로 예약한 내용을 확인한다.

 

3. 예약 작업 삭제

# atrm 1

>> at -l 로 확인한 작업번호를 지정해 작업을 삭제한다.

 

참고도서: 이것이 리눅스다 with RedHat CentOS 8 (개정판) _우재남 (한빛미디어)

SMALL