상세 컨텐츠

본문 제목

[CentOS 8] 작업 예약 스케줄러 (cron, at)

Linux

by mp.jamong 2020. 10. 15. 12:14

본문

 

리눅스 시스템 작업 진행시 배치잡 또는 예약된 작업을 스케줄로 관리가 필요한 상황(백업, 정기적인 작업)이 있습니다. 이때 cron과 at을 이용하여 예약된 작업을 등록하고 실행을 하게 됩니다. 이번 포스팅에서는 cron과 at 사용법에 대해 설명을 드리고자 합니다. 이 둘의 차이점을 명확히 아시고, 사용하시면 효율적인 작업 스케줄 작업 운영이 가능할 것입니다.

 

Contents | 작업 예약 스케줄러

Ⅰ. cron 사용법

Ⅱ. at 사용법

 

1. cron 사용법

▷ cron은 주기적으로 반복되는 일을 자동으로 실행할 수 있도록 시스템 작업을 예약해 놓은 것을 의미

 → cron 데몬(서비스) : crond

 → cron 설정 파일 : /etc/crontab

 → cron 관련 디렉터리 : /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly, /etc/cron.monthly

 

▷ /etc/crontab 형식

 → crontab 파일을 열어보면 사용 예제가 주석으로 처리가 되어 있음

# crontab 설명
[root@localhost cron.hourly]# cat /etc/crontab
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

 

▷ crontab 사용 예시

# crontab 등록
[root@localhost etc]# crontab -e

# 매월 1일 5시에 root 계정으로 /home 디렉터리를 /backup 디렉터리로 복사
00 05 1 * * root cp -r /home /backup

# 매월 1일 5시에 root 계정으로 backup.sh 스크립트 실행
00 05 1 * * root /root/backup.sh


# 매일 3시에 root 계정으로 crontab 백업
00 03 * * * root crontab -l > /root/backup_cron_`date +"%G%m%e%H%M"`.txt


# test02 계정의 crontab 등록
[root@localhost etc]# crontab -e -u test02

# 매시 05분, 35분에 test02 계정으로 every_30min.sh 스크립트 실행
05,35 * * * * test02 /test02/every_30min.sh

# 매시 10분마다 test02 계정으로 every_10min.sh 스크립트 실행
*/10 * * * * test02 /test02/every_10min.sh

# 매일 6시간마다 test02 계정으로 every_6hour.sh 스크립트 실행
00 */6 * * * test02 /test02/every_6hours.sh

# 주중 월~금 8시 test02 계정으로 /root/weekday.sh 스크립트 실행
0 8 * * 1-5 test02 /test02/weekday.sh

# 주말(토,일) test02 계정으로 /root/weekend.sh 스크립트 실행
0 8 * * 0,6 test02 /test02/weekend.sh

 

▷ crontab 등록 후 적용 방법

 → crontab 등록 또는 수정 후 반드시 cron 데몬을 재시작

# crontab 시스템 적용
[root@localhost etc]# systemctl restart crond

 

▷ crontab 작업 목록 확인과 삭제

# root 계정의 crontab 리스트 확인
[root@localhost etc]# crontab -l
00 05 1 * * root cp -r /home /backup
00 05 1 * * root /root/backup.sh
00 03 * * * root crontab -l > /root/backup_cron_`date +"%G%m%e%H%M"`.txt

# test02 계정의 crontab 리스트 확인
[root@localhost etc]# crontab -l -u test02
05,35 * * * * test02 /test02/every_30min.sh
*/10 * * * * test02 /test02/every_10min.sh
00 */6 * * * test02 /test02/every_6hours.sh
0 8 * * 1-5 test02 /test02/weekday.sh
0 8 * * 0,6 test02 /test02/weekend.sh

# root 계정의 crontab 삭제
[root@localhost etc]# crontab -r
[root@localhost etc]# crontab -l
no crontab for root

# test02 계정의 crontab 삭제
[root@localhost etc]# crontab -r -u test02
[root@localhost etc]# crontab -l -u test02
no crontab for test02

 

 

2. at 사용법

▷ at 은 1회성 예약 작업을 등록하는 것으로 한번 실행되면 소멸되는 방식

 

▷at 사용법

 → echo 명령어 | at 시간

 → at 시간 > 명령어 > 명령어 > ... > <EOT>

 → at 시간 -f 실행파일

 

▷ at 사용 예시

# at 등록 예시 1
[root@localhost etc]# echo yum update -y | at 01:00
warning: commands will be executed using /bin/sh
job 6 at Fri Oct 16 01:00:00 2020

# at 등록 예시 2
[root@localhost etc]# at 02:00
warning: commands will be executed using /bin/sh
at> yum update -y
at> ctrl+d
job 7 at Fri Oct 16 02:00:00 2020

# at 등록 예시 3
[root@localhost etc]# at 03:00 -f /root/update.sh
warning: commands will be executed using /bin/sh
job 8 at Fri Oct 16 03:00:00 2020

 

▷ at 등록 확인과 삭제

# at 등록 확인
[root@localhost etc]# at -l
6	Fri Oct 16 01:00:00 2020 a root
7	Fri Oct 16 02:00:00 2020 a root
8	Fri Oct 16 03:00:00 2020 a root

# at 삭제
[root@localhost etc]# atrm 6
[root@localhost etc]# at -l
7	Fri Oct 16 02:00:00 2020 a root
8	Fri Oct 16 03:00:00 2020 a root

 

 

▽ 같이 보면 더 좋은 블로그 글 

 

[CentOS 8] 파일 검색 (find, which, whereis)

윈도우즈 파일 검색은 검색창에서 검색어를 입력하여 원하는 파일 또는 폴더(디렉터리)를 찾을 수 있습니다. 리눅스도 GUI 환경에서 검색창에서 검색이 가능하지만, 대부분 CLI 환경에서 시스템 �

mpjamong.tistory.com

 

[CentOS 8] 파일 압축과 해제

윈도우즈에 비해 리눅스는 시스템 관리가 주로 CLI 기반으로 진행되다보니 많은 명령어에 익숙해져야 하는 어려움이 있습니다. 많이 사용하는 명령어 중 파일 압축과 해제에 대해 소개하고자 합

mpjamong.tistory.com

 

관련글 더보기

댓글 영역