공부합시다!/LInux

CentOS7: at & cron

간서치 2023. 1. 3. 14:13
728x90

Linux환경에서 단순 예약 작업은 at으로 주기적인 예약작업은 cron으로 처리를 합니다.

간단하게 살펴 보도록 하겠습니다.

 

1. at

2. cron 

순으로 진행 합니다.

 

1. at

 1.1. 한 번만 실행되는 단순 예약 작업에 사용

 1.2. at daemon 설치

 1.3. at daemon 시작

# yum install -y at
# systemctl start atd

 

 1.3. 작업 설정

  1.3.1. 작업 실행 시간 설정

  1.3.2. 작업 번호 및 시간, 실행 user 정보 확인

  1.3.3. 자세한 작업 내용 확인

# at 12:10 2023-01-03

at> cat > hello.txt << EOF
at> hello
at> EOF
at> <EOT>  # EOT는 CTRL + d

# at -1
작업번호, 시간, 실행 user

# atq
at -l 과 동일

#at -c 1
-c 옵션 뒤에 작업번호를 입력하면 자세한 작업 정보를 출력함.

 

  1.3.4. 작업 내용 확인 후 삭제

  1.3.5. shell script 작성

# at -d 1
-d 옵션 뒤 작업번호 지정하면 삭제
# atrm 작업번호
at -d 와 동일

vi user.sh

#! /bin/bash
useradd x
echo 'It1' | passwd --stdin x

 

  1.3.6. 작업 실행 시간 지정

  1.3.7. 자세한 작업 내용 확인

# at now +3 minutes -f user.sh
지금부터 3분뒤에 -f 지정한 user.sh를 실행하라

# at -l 
작업번호 확인

# at -c 2
자세한 작업내용 확인

 

  1.3.8. 작업 실행 후 확인

사용자를 생성하고 passwd를 지정하는 단순한 스크립트

# tail -2 /etc/passwd
/etc/passwd파일의 끝 2줄만 실행

# tail -2 /etc/shadow
x user의 password 설정 여부 확인

 

 

2. cron

 2.1. 주기적으로 실행되는 반복 예약 작업에 사용

 2.2. crond daemon 설치되어 있기 때문에 확인 작업

  2.2.1. cron datemon 실행여부 확인

# systemctl status crond

 

  2.2.2. 설정 파일이 crontab 구성

# vi /etc/crond

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed

01-10/2   *   *   1-12/3   *    root    rm -rf /tmp/*
# 1,4,7,10월 매일 매시간 1,3,5,7,9분에 root 권한으로 /tmp디렉토리의 모든 파일 삭제

59   01,06   *    *    6,7      root    sh /root/backup.sh
# 매월 토요일과 일요일 새벽 1시59분과 6시59분에 root 권한으로 sh /root/backup.sh 실행

 

  2.2.3. 두번째 cron작업을 위한 /root/backup.sh 작성

# vi /root/backup.sh

#! /bin/bash

set $(date)
fname='home-$1$2$3$4$5.tar.bz2'
tar cfj /backup/$fname /home

# /home 디렉토리를 작업을 실행하는 년월일시간분.tar.bz2 압축 및 아카이브 스크립트

 

 2.2.4. 실행 후 파일 생성 확인

# sh backup.sh
/root/backup.sh 실행

# ls /backup
파일 생성 확인

 

cron 부분에서 빠진 내용이 있네요!
반드시 # mkdir /backup 디렉토리를 생성해 주셔야 합니다.

 

Have a nice day!

 

 

728x90