리눅스에서 정기적으로 특정 작업을 실행하려면 cron 서비스를 활용할 수 있습니다. cron은 스케줄링된 작업을 실행하는 데 사용되며, 개별 사용자는 crontab(cron table)을 통해 자신의 작업을 설정할 수 있습니다. 이번 글에서는 crontab의 사용법과 예제를 상세히 알아보겠습니다.
1. crontab 개요
crontab은 사용자의 스케줄링된 작업 목록을 관리하는 명령어입니다. 이를 통해 특정 시간에 자동으로 실행되는 작업을 등록할 수 있습니다.
crontab 명령어
- crontab -l : 현재 사용자의 crontab 목록을 출력합니다.
- crontab -e : 현재 사용자의 crontab을 편집합니다.
- crontab -r : 현재 사용자의 crontab을 삭제합니다.
- crontab -u 사용자명 -l : 특정 사용자의 crontab 목록을 출력합니다. (root 사용자만 가능)
2. crontab 스케줄 형식
crontab에 작업을 등록할 때는 다음과 같은 형식으로 작성합니다.
분 시 일 월 요일 명령어
각 필드의 의미는 다음과 같습니다.
필드값 범위설명
분 | 0-59 | 실행될 분 |
시 | 0-23 | 실행될 시간 (24시간제) |
일 | 1-31 | 실행될 날짜 |
월 | 1-12 | 실행될 월 |
요일 | 0-7 | 실행될 요일 (0과 7은 일요일) |
명령어 | - | 실행할 명령어 |
예제:
30 14 * * 1 /home/user/script.sh
위의 예제는 매주 월요일 오후 2시 30분에 /home/user/script.sh 스크립트를 실행합니다.
특수 문자 사용
- * : 모든 값을 의미합니다.
- , : 여러 개의 값을 지정할 때 사용합니다. (예: 1,15 → 1일과 15일 실행)
- - : 범위를 지정할 때 사용합니다. (예: 1-5 → 1일부터 5일까지 실행)
- / : 일정 간격으로 실행할 때 사용합니다. (예: */10 → 10분 간격 실행)
예제:
*/10 * * * * /home/user/backup.sh
위의 예제는 backup.sh 스크립트를 매 10분마다 실행합니다.
3. crontab 예제
3.1 특정 시간에 스크립트 실행
매일 오전 3시에 /home/user/cleanup.sh 스크립트를 실행하는 crontab 설정:
0 3 * * * /home/user/cleanup.sh
3.2 매주 금요일 오후 6시에 로그 파일 백업
0 18 * * 5 tar -czf /home/user/logs/backup_$(date +\%F).tar.gz /var/log
3.3 1시간마다 특정 프로그램 실행
0 * * * * /usr/bin/python3 /home/user/script.py
3.4 매달 1일 자정에 특정 디렉토리 정리
0 0 1 * * rm -rf /home/user/temp/*
3.5 부팅 시 실행되는 작업 추가
부팅 시 특정 작업을 실행하려면 @reboot을 사용할 수 있습니다.
@reboot /home/user/startup.sh
4. 로그 확인 및 문제 해결
4.1 cron 로그 확인
cron 작업이 실행되었는지 확인하려면 /var/log/syslog 또는 /var/log/cron.log를 확인하면 됩니다.
tail -f /var/log/syslog | grep CRON
4.2 오류 로그 저장하기
crontab 작업에서 오류 로그를 남기려면 다음과 같이 작성합니다.
0 2 * * * /home/user/script.sh >> /home/user/cron.log 2>&1
4.3 실행 권한 확인
cron에서 실행할 스크립트가 실행 권한을 가지고 있는지 확인해야 합니다.
chmod +x /home/user/script.sh
5. 결론
crontab을 활용하면 반복적인 작업을 자동화할 수 있어 서버 관리나 정기적인 작업을 손쉽게 수행할 수 있습니다. 위에서 소개한 예제를 참고하여 원하는 스케줄을 설정해 보세요!
'운영체제 > 리눅스(CentOS)' 카테고리의 다른 글
리눅스 디스크 용량 관리 (df, du, lsof, fstab 설정) (0) | 2025.04.02 |
---|---|
리눅스에서 파티션 관리하기: fdisk, parted, mkfs, mount (0) | 2025.04.02 |
리눅스 서비스 및 데몬 관리: systemd, init, service, systemctl (0) | 2025.03.30 |
리눅스에서 소프트웨어 설치와 관리: apt, yum, dnf, snap, pacman 완벽 가이드 (0) | 2025.03.30 |
리눅스 기본 네트워크 명령어 정리 (0) | 2025.03.29 |