서버 재부팅은 메모리 최적화나 주기적인 시스템 점검을 위해 필요하며, 리눅스 서버에서는 주로 **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
| 필드 | 값 | 의미 |
| 분 | 30 | 30분 |
| 시 | 4 | 새벽 4시 |
| 일 | * | 매일 (요일이 지정되었으므로 무시) |
| 월 | * | 매월 |
| 요일 | 0 | 일요일 (0 또는 7은 일요일, 1은 월요일) |
| 명령 | /sbin/shutdown -r now | 즉시 재부팅 명령 |
✅ 예시: 매일 새벽 3시에 재부팅
매일 새벽 3시 0분에 재부팅하려면 다음과 같이 입력합니다.
0 3 * * * /sbin/shutdown -r now
3. crontab 저장 및 확인
편집기에서 명령어를 입력한 후, 다음 절차에 따라 저장하고 종료합니다.
vi편집기 사용 시:ESC키를 누릅니다.:wq를 입력하고Enter를 눌러 저장 후 종료합니다.
- 저장 확인:
- 저장 후 **
crontab: installing new crontab**과 같은 메시지가 나타나면 성공적으로 예약된 것입니다.
- 저장 후 **
예약된 스케줄이 제대로 등록되었는지 확인하려면 다음 명령어를 사용합니다.
Bash
crontab -l
⚠️ 주의사항
- 경로 지정: 재부팅 명령인
shutdown은 시스템 명령이므로 절대 경로인/sbin/shutdown을 사용하는 것이 가장 안전합니다. - 실행 권한:
crontab에 등록된 명령은 해당 사용자의 권한으로 실행됩니다.shutdown명령은 일반적으로 관리자 권한이 필요하므로, 일반 사용자가 아닌root계정으로 접속하여crontab -e를 실행하는 것이 일반적입니다. - 서비스 중단 알림: 자동 재부팅은 서비스가 일시적으로 중단됨을 의미하므로, 트래픽이 가장 적은 새벽 시간대에 설정해야 합니다.
4. 특정 서비스 재시작 예약 (추가 정보)
서버 전체를 재부팅하는 대신, **웹 서버(Nginx/Apache)**나 DB 서버(MySQL) 등 특정 서비스만 재시작하여 메모리 누수를 해결하는 방법도 자주 사용됩니다.
예시: 매일 새벽 5시에 Nginx 재시작
Bash
0 5 * * * /usr/sbin/service nginx restart
nginx의 절대 경로는 시스템 환경에 따라 다를 수 있으므로,which nginx명령을 통해 정확한 경로를 확인하는 것이 좋습니다.- 최신 리눅스 시스템(Systemd 사용)에서는
systemctl restart nginx명령을 사용할 수도 있습니다.


