서버 자동 재시작 스케줄(Cron) 설정 기본 방법

서버 재부팅은 메모리 최적화나 주기적인 시스템 점검을 위해 필요하며, 리눅스 서버에서는 주로 **cron**이라는 스케줄러를 사용하여 자동화합니다.

cron은 사용자가 정한 시간에 특정 명령(여기서는 재부팅 명령)을 자동으로 실행하도록 예약하는 기능입니다.


1. cron 설정 파일 열기

터미널(SSH)을 통해 서버에 접속하여, 사용자 계정의 cron 설정 파일인 **crontab**을 엽니다.

Bash

crontab -e
  • 이 명령을 실행하면 일반적으로 vi 또는 nano 편집기가 열립니다. (만약 처음 사용한다면 편집기 선택 창이 나올 수 있습니다.)

2. 재부팅 명령어 예약 등록

열린 crontab 파일의 맨 아랫줄에 다음 형식에 맞춰 명령어를 입력하고 저장합니다.

cron 예약 형식은 다음과 같습니다:

분(0-59) 시(0-23) 일(1-31) 월(1-12) 요일(0-7) 실행할 명령어

✅ 예시: 매주 일요일 새벽 4시 30분에 재부팅

매주 일요일 새벽 4시 30분에 서버를 재부팅하도록 예약하려면 다음과 같이 입력합니다.

30 4 * * 0 /sbin/shutdown -r now
필드의미
3030분
4새벽 4시
*매일 (요일이 지정되었으므로 무시)
*매월
요일0일요일 (0 또는 7은 일요일, 1은 월요일)
명령/sbin/shutdown -r now즉시 재부팅 명령

✅ 예시: 매일 새벽 3시에 재부팅

매일 새벽 3시 0분에 재부팅하려면 다음과 같이 입력합니다.

0 3 * * * /sbin/shutdown -r now

3. crontab 저장 및 확인

편집기에서 명령어를 입력한 후, 다음 절차에 따라 저장하고 종료합니다.

  1. vi 편집기 사용 시:
    • ESC 키를 누릅니다.
    • :wq를 입력하고 Enter를 눌러 저장 후 종료합니다.
  2. 저장 확인:
    • 저장 후 **crontab: installing new crontab**과 같은 메시지가 나타나면 성공적으로 예약된 것입니다.

예약된 스케줄이 제대로 등록되었는지 확인하려면 다음 명령어를 사용합니다.

Bash

crontab -l

⚠️ 주의사항

  1. 경로 지정: 재부팅 명령인 shutdown은 시스템 명령이므로 절대 경로/sbin/shutdown을 사용하는 것이 가장 안전합니다.
  2. 실행 권한: crontab에 등록된 명령은 해당 사용자의 권한으로 실행됩니다. shutdown 명령은 일반적으로 관리자 권한이 필요하므로, 일반 사용자가 아닌 root 계정으로 접속하여 crontab -e를 실행하는 것이 일반적입니다.
  3. 서비스 중단 알림: 자동 재부팅은 서비스가 일시적으로 중단됨을 의미하므로, 트래픽이 가장 적은 새벽 시간대에 설정해야 합니다.

4. 특정 서비스 재시작 예약 (추가 정보)

서버 전체를 재부팅하는 대신, **웹 서버(Nginx/Apache)**나 DB 서버(MySQL) 등 특정 서비스만 재시작하여 메모리 누수를 해결하는 방법도 자주 사용됩니다.

예시: 매일 새벽 5시에 Nginx 재시작

Bash

0 5 * * * /usr/sbin/service nginx restart
  • nginx의 절대 경로는 시스템 환경에 따라 다를 수 있으므로, which nginx 명령을 통해 정확한 경로를 확인하는 것이 좋습니다.
  • 최신 리눅스 시스템(Systemd 사용)에서는 systemctl restart nginx 명령을 사용할 수도 있습니다.

댓글 남기기