본문 바로가기
운영체제/리눅스(CentOS)

리눅스에서 crontab을 이용한 작업 스케줄링

by 마루의 일상 2025. 4. 1.
728x90
반응형

리눅스에서 정기적으로 특정 작업을 실행하려면 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을 활용하면 반복적인 작업을 자동화할 수 있어 서버 관리나 정기적인 작업을 손쉽게 수행할 수 있습니다. 위에서 소개한 예제를 참고하여 원하는 스케줄을 설정해 보세요!

728x90
반응형