Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
Tags
- sftp
- 리눅스서버
- 서버방화벽
- geoip
- CentOS
- 리눅스
- FTP
- SMTP설정
- ubuntu
- FileZilla
- https
- oops-firwall
- iptables
- 서버보안
- 오블완
- postfix
- DNS
- centos7
- 서버관리
- 리눅스명령어
- 티스토리챌린지
- 시스템관리
- 웹서버
- 파일질라
- 국가IP차단
- ip차단
- Apache
- linux
- 서버운영
- SSL인증서
Archives
- Today
- Total
운영중입니다
Crontab을 통한 자동 실행 설정 가이드 본문
✅ 1. crontab 이란?
crontab은 리눅스/유닉스 시스템에서 주기적으로 작업(명령어나 스크립트)을 실행하기 위한 시간 기반의 작업 스케줄러를 뜻함.
cron daemon이 crontab 파일을 읽고, 지정된 시간에 맞춰 해당 작업을 자동으로 실행.
주요 특징
- 시간 단위로 반복 작업 자동화
- 사용자별 스케줄 관리 가능
- 시스템 전체의 작업 예약도 가능
✅ 2. crontab 설치 및 서비스 활성화 방법
* 리눅스 배포판이나 버전에 따라 관리 방식이 조금씩 차이가 있음.
2.1 CentOS 5
# crontab 설치
yum install crontabs -y
# 서비스 등록 및 시작
chkconfig crond on
service crond start
#현재 상태 확인
service crond status
# 서비스 등록 확인
chkconfig --list | grep crond
2.2 CentOS 7
# crontab 설치
yum install cronie -y
# 서비스 등록 및 시작
systemctl enable crond
systemctl start crond
# 현재 상태 확인
systemctl status crond
# 서비스 등록 확인
systemctl list-unit-files | grep crond
* CentOS 7부터는 systemd 기반으로 서비스 관리 도구가 바뀌었기 때문에 systemctl을 사용.
2.3 Ubuntu
# crontab 설치
sudo apt install cron -y
# 서비스 등록 및 시작
sudo systemctl start cron # 즉시 시작
sudo systemctl enable cron # 부팅 시 자동 시작
# 현재 상태 확인
sudo systemctl status cron
# 부팅시 시작 등록 확인
systemctl is-enabled cron
systemctl list-unit-files | grep cron
✅ 3. crontab 설정 방법
crontab 설정에는 사용자 개인 crontab 파일과 시스템 전체 설정 파일인 /etc/crontab 두 가지 방식이 있음.
3.1 /etc/crontab과 crontab -e의 차이점
| 항목 | /etc/crontab | crontab -e |
| 적용 대상 | 시스템 전체 | 특정 사용자 |
| 형식 | 시간 + 사용자 + 명령어 | 시간 + 명령어 |
| 위치 | /etc/crontab | /var/spool/cron/사용자명 |
| 권한 | 루트 권한 필요 | 일반 사용자도 사용 가능 |
예를 들어 /etc/crontab 파일은 다음과 같은 형식을 사용.
# 분 시 일 월 요일 사용자 실행명령어
#ex) 00 04 * * * root /root/scipt_ex.sh > /dev/null 2>&1
반면, crontab -e는 사용자 지정이 없고 아래처럼 작성.
# 분 시 일 월 요일 실행명령어
# ex) 00 04 * * * /root/scipt_ex.sh > /dev/null 2>&1
3.2 /etc/crontab을 사용한 명령어 설정 예시
# 매일 새벽 3시에 시간 동기화 수행
0 3 * * * root rdate -s time.bora.net > /dev/null 2>&1
# 0 3 * * * : 매일 03시 00분
# root : 실행할 사용자
# rdate -s time.bora.net : 실행할 명령
# > /dev/null 2>&1 : 로그/에러 메시지 무시
3.3 /etc/crontab에서 스크립트 실행 예시
#ex) 백업 스크립트 /usr/local/bin/script_ex.sh를 매일 새벽 2시에 실행
0 2 * * * root /usr/local/bin/script_ex.sh >> /var/log/backup.log 2>&1
# >> /var/log/backup.log : 출력 로그 저장
# 2>&1 : 오류 로그도 같은 파일로 저장
✅ 4. crontab -e 명령어를 이용한 사용자 스케줄 설정
crontab -e
#ex) /usr/local/bin/script_ex.sh 스크립트를 10분마다 실행
*/10 * * * * /usr/local/bin/script_ex.sh
#작업을 확인하려면:
crontab -l
#작업을 삭제하려면:
crontab -r
✅ 5. 주의사항 및 팁
5.1 환경 변수 주의
#crontab은 기본 환경이 제한적이기 때문에, 스크립트 내에 명시적으로 환경 변수를 지정하거나
#source /etc/profile 등을 사용하는 것을 권장
SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
5.2 로그 확인
# 작업 실행 여부 확인은 다음 로그 파일에서 확인 가능
/var/log/cron
# 실시간으로 확인시 아래 명령어 사용
tail -f /var/log/cron
'리눅스' 카테고리의 다른 글
| CentOS 서버에서 stress를 활용한 부하 테스트 (0) | 2025.10.02 |
|---|---|
| lsof 사용법 가이드 – 프로세스와 연결된 파일 확인하기 (0) | 2025.09.29 |
| hwclock이란? System Clock과의 차이점과 동기화 방법 (4) | 2025.08.06 |
| 신규 서버 설치 후 꼭 확인해야 할 시간 설정 (1) | 2025.08.01 |
| CentOS에서 MySQL 4.1.22 구버전 설치하기 (3) | 2025.07.31 |