문서

빠른 시작 + 부분별, 기기별 기능 설명 (계속 업데이트 중)

예약 작업 (Cron)

이 문서는 대상 서버의 정기 작업을 관리하는 방법을 소개합니다.

먼저 알아두기: Cron이란

Cron은 Linux에 기본 내장된 「정기 스케줄링」 도구입니다. 「매일 새벽 3시에 데이터베이스 자동 백업」, 「1시간마다 로그 정리」, 「매주 월요일에 특정 서비스 재시작」처럼 지정할 수 있고, 시간이 되면 사람이 지켜보지 않아도 자동으로 실행됩니다.

기능 소개

대상 서버의 Cron 정기 작업을 조회, 추가, 삭제합니다.

활용 시나리오

  • 데이터베이스 정기 백업, 로그 정리
  • 모니터링 스크립트 정기 실행
  • 서비스 정기 재시작, 인증서 갱신

사용 방법

특정 서버의 「시스템 관리 패널 → 예약 작업」에 들어가면 그 서버의 현재 모든 Cron 작업을 볼 수 있습니다.

작업 추가

Cron 표현식과 실행할 명령을 입력합니다:

항목설명
시간 표현식5개 필드 형식, 예: 0 3 * * * (매일 새벽 3시)
명령실행할 shell 명령

Cron 표현식 형식 (분 시 일 월 요일):

* * * * *  명령
│ │ │ │ │
│ │ │ │ └── 요일 (0-7, 0/7=일요일)
│ │ │ └──── 월 (1-12)
│ │ └────── 일 (1-31)
│ └──────── 시 (0-23)
└────────── 분 (0-59)

자주 쓰는 예시:

표현식의미
*/5 * * * *5분마다
0 * * * *매시간
0 3 * * *매일 새벽 3시
0 3 * * 1매주 월요일 새벽 3시
0 3 1 * *매월 1일 새벽 3시
0 3 * * 0매주 일요일 새벽 3시
30 2 * * *매일 새벽 2시 30분

실용 명령 예시:

# 매일 새벽 3시 데이터베이스 백업 (예시)
0 3 * * * docker exec sshe-mysql mariadb-dump -uroot -p'<비밀번호>' dbname > /opt/backup/db-$(date +\%F).sql

# 6시간마다 임시 파일 정리
0 */6 * * * find /tmp -type f -mtime +7 -delete

# 매주 월요일 새벽 4시 특정 서비스 재시작
0 4 * * 1 systemctl restart my-app

주의 사항

1. Cron 작업은 대상 서버의 현재 사용자 권한으로 실행되므로, 그 사용자가 명령을 실행할 권한이 있는지 확인하세요.

2. 명령은 절대 경로로 쓰는 것을 권장합니다 (Cron은 환경 변수가 적어 상대 경로로는 프로그램을 찾지 못할 수 있습니다).

3. 명령에 %를 쓸 때는 \%로 이스케이프해야 합니다 (Cron은 %를 특수 문자로 취급합니다).

4. Cron 작업을 삭제하면 즉시 반영됩니다.

5. 시스템 수준 Cron(/etc/crontab) 수정은 패널 밖에서 해야 할 수 있습니다. 패널은 기본적으로 현재 사용자의 crontab -l을 관리합니다.