서버 이상으로 재부팅이 필요한 상황이다. 물리 하드웨어 재부팅이 불가능한 상황이라 콘솔 상에서 재부팅 명령을 실행하고자 한다.
이 글에서는 재부팅 시도 시 사용할 수 있는 명령어를 정리한다. 수행에는 root 권한이 필요하다.
shutdown
-r 옵션과 재부팅 수행 시점을 지정해야 한다. -f 옵션 사용 시 시스템 종료에 해당하므로 물리적으로 시스템을 기동시켜야 한다.
# 지금 재부팅
shutdown -r now
# 전달 받은 시간(분) 이후 재부팅
shutdown -r <MIN>
shutdown -r 15
# 지정 시간에 재부팅
shutdown -r hh:mm
shutdown -r 18:45
동작 순서
1. 실행 중인 모든 프로세스 kill (SIGKILL)
2. File System unmount
3. Kernel에 ACPI 파워 명령을 보낸다.
reboot
내부적으로 shutdown -r 명령을 수행한다.
reboot
# 시스템 강제 재부팅. 안전하지 않음
reboot -f
init
init 6
reboot에 해당하는 runlevel(6)을 전달하여 실행한다. 참고로 0을 전달하면 시스템 종료를 수행한다.
init 프로세스가 활성화된 모든 프로세스와 데몬을 종료하도록 한 후, 재부팅을 위한 shutdown -r now 명령을 호출한다.
systemctl
RHEL, CentOS 7부터는 systemctl을 시용하는 것이 좀 더 안전하다.
systemctl reboot
shutdown과 reboot은 구버전 호환성을 위해 남아있다.
재부팅에 시간이 오래 걸렸다면 디스크나 부팅 로그, 불필요한 서비스가 존재하는지 또는 서비스 종료에 오랜 시간이 필요한 게 있는지 확인하도록 한다.
메모리 과다 사용 후라면 프로세스 행으로 인한 시간 소요가 있을 수 있다. 이 경우는 도커를 사용하고 있을 때 자주 발생하며, 모든 컨테이너가 종료될 때까지 shutdown이 대기 상태를 유지하기 때문이다.
참고 문서
http://a.zany.kr:9003/board/bView.asp?bCode=11&aCode=14194