[Centos 7] Linux Crond & Crontab (시스템 예약 작업 크론 )
2022. 11. 24. 15:57ㆍ리눅스(Linux)
Linux Cron
- Linux System에서 주기적인 작업처리를 진행할 때 주로사용 된다. ( 예약 작업을 의미 )
- Cron은 프로세스 예약 데몬이며, 특정시각에 지정 된 작업을 수행한다.
- Crontab은 Cron에 의해 실행 될 예약 작업의 목록을 정의하는 파일을 말한다. ( CronTable )
- Cron은 사용자별 예약작업을 따로 가질 수 있다
- Cron작업에 대한 로그기록은 /var/log/cron에 저장 된다.
$ Linux cron 관련 확인사항
# rpm -qa | grep cronie
cronie-1.4.11-14.el7_2.1.x86_64
- cron 패키지
# ps -ef | grep cron
root 1081 1 0 14:01 ? 00:00:00 /usr/sbin/crond –n
- cron 활성화 상태 확인
# ls -l /var/log/cron
-rw-------. 1 root root 3875 3월 2 16:20 /var/log/cron
- cron 로그 기록
# ls -l /var/spool/cron
-rw-------. 1 root root 333 3월 2 19:48 root
- 사용자 별 crontab 설정 정보 저장 디렉터리
- crontab 설정을 적용해야 생성된다.
# ls -d /etc/cron*
/etc/cron.d /etc/cron.deny /etc/cron.monthly /etc/crontab
/etc/cron.daily /etc/cron.hourly /etc/cron.weekly
- cron 관련 파일 및 디렉터리
$ Linux crontab 명령어 기본 사용 형식
- crontab -l : 예약 작업 리스트 확인
- crontab -e : 예약 작업 편집
- crontab -r : 예약 작업 삭제
- crontab -u [ UserName ] : 특정 사용자의 예약작업 확인 및 편집
crontab -e 명령을 이용하여 예약작업을 정의 한다.
crontab 내용 입력은 vi 편집기와 사용법이 동일하다.
특정 사용자 이름지정은 “root” 관리자 계정만 사용이 가능하다.
$ Linux crontab 파일 정의 형식
# cat /etc/crontab
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12)
# | | | | .---- day of week (0 - 6) [ 0 (일요일), 6 (토요일) ]
# | | | | |
# * * * * * user-name command to be executed
$ Linux crontab 예제
# vi ./cron_test1.sh
#!/bin/bash
echo "Cron Test" > /root/cron.txt
# chmod +x ./cron_test1.sh
# crontab -e
0 19 * * * /root/script/cron_test1.sh
crontab: installing new crontab
- 매일 정각 19시에 cron_test1.sh 스크립트 수행
# crontab -l
0 19 * * * /root/script/cron_test1.sh
# ls -l /root
합계 12
-rw-r--r--. 1 root root 13 3월 2 19:03 cron.txt
# cat /root/cron.txt
Cron Test
# ls -l /var/spool/cron
합계 4
-rw-------. 1 root root 52 3월 2 19:02 root
# tail /var/log/cron
Mar 2 19:15:01 MyLinux CROND[44531]: (root) CMD (/root/script/cron_test1.sh)
# vi ./cron_test2.sh
#!/bin/bash
DATE=$(date +%Y-%m-%d)
BACKUP_DIR="/backup“
tar -cvzpf $BACKUP_DIR/test-$DATE.tar.gz /var/log
- /var/log 디렉터리 Backup “날짜정보 포함”
find $BACKUP_DIR/* -mtime +10 -exec rm {} \;
- 10일이 지난 Backup File 삭제
# chmod +x ./cron_test2.sh
# crontab -e
0 20 * * * /root/script/cron_test2.sh
crontab: installing new crontab
- 매일 정각 20시에 cron_test2.sh 스크립트 수행
# crontab -l
0 19 * * * /root/script/cron_test1.sh
0 20 * * * /root/script/cron_test2.sh
# ls /backup
test-03-09-2020.tar.gz
# tail /var/log/cron
Mar 9 20:26:02 localhost CROND[1765]: (root) CMD (/root/script/cron_test2.sh)
$ Linux crontab 설정 예시
* * * * * /root/script/1_min.sh
- 매 1분마다 1_min.sh 스크립트 실행 ( 하루에 1440회 )
*/10 * * * * /root/script/10_min.sh
- 10분마다 10_min.sh 스크립트 실행
0,30 * * * * /root/script/30_min.sh
- 매시 정각, 30분에 30_min.sh 스크립트 실행
0 2 * * * /root/script/backup.sh
- 매일 정각 02시에 backup.sh 스크립트 실행
0 */6 * * * /root/script/6_hours.sh
- 6시간마다 6_hours.sh 스크립트 실행 (00:00, 06:00, 12:00, 18:00)
30 13 * * 1-5 /root/script/weekday.sh
- 평일(월요일~금요일) 13:30분에 weekday.sh 스크립트 실행
30 15 * * 0,6 /root/script/weekend.sh
- 주말(일요일, 토요일) 15:30분에 weekend.sh 스크립트 실행
40 17 * * 0,3,5 rdate -s time.bora.net
- 매주 월,수,금 17:40분에 rdate 명령어를 이용하여 시간 동기화
$ crontab -u root -l
must be privileged to use -u
$ crontab -e
crontab: installing new crontab
$ crontab -l
30 15 * * 0,6 /root/script/weekend.sh
$ ls -l /var/spool/cron
ls: cannot open directory /var/spool/cron: 허가 거부
- 일반 사용자를 이용한 cron 설정 후 목록 확인
# ls -l /var/spool/cron
합계 8
-rw-------. 1 itbank itbank 39 3월 2 19:50 user
-rw-------. 1 root root 333 3월 2 19:48 root
- 관리자 계정을 이용하여 user 사용자의 crontab 확인
# vi /etc/cron.deny
user
$ crontab -e
You (user) are not allowed to use this program (crontab)
See crontab(1) for more information
$ crontab -l
You (user) are not allowed to use this program (crontab)
See crontab(1) for more information
- /etc/cron.deny 파일을 이용 한 사용자 제어
- 일반 사용자 계정의 Cron 설정이 불가능해지는 것을 확인
( 작업 확인 후 다시 사용 할 수 있도록 목록에서 제거 )
# crontab -l > /root/cron_back.txt
# cat /root/cron_back.txt
15 19 * * * root /root/script/cron_test1.sh
# crontab -r
# crontab -l
no crontab for root
# crontab /root/cron_back.txt
# crontab -l
15 19 * * * root /root/script/cron_test1.sh
- Linux crontab 삭제 및 백업
- 선택 삭제가 없으므로, 삭제 전 반드시 Backup을 진행하는 것이 좋다.
( crontab -r 명령어 입력 시 전체 설정정보 삭제 )
'리눅스(Linux)' 카테고리의 다른 글
Hostnamectl & Systemctl (0) | 2022.11.24 |
---|---|
[Centos 7] Linux Kernel 관리 (0) | 2022.11.24 |
[Centos 7] Shell Script 예제 (0) | 2022.11.24 |
[Centos 7] Shell Programming, shell script (쉘 스크립트) (0) | 2022.11.24 |
[Centos 7] Tar, Gzip and Bzip (압축 도구들) (0) | 2022.11.24 |