장애 대응 중에 한 줄로 끝나는 질문들을 모았다. 각 절은 서로 독립적이며, 명령 하나와 그 결과를 어떻게 읽는지만 담는다.
가장 짧은 답은 who -b 다. 마지막 부팅 시각 한 줄만 찍는다.
who -b
# system boot 2026-01-27 09:12
uptime 은 켜진 지 얼마나 됐는지를, uptime -s 는 부팅 시각 자체를 보여 준다. uptime -s 는 procps-ng 기준이며 BusyBox 등 축소판에는 없다.
uptime
uptime -s
재부팅 이력이 필요하면 last 의 reboot 가상 사용자를 본다. /var/log/wtmp 를 읽으므로 로그 로테이션 주기만큼만 남는다.
last reboot | head
systemd 기반에서는 systemctl status 의 Since: 줄이 같은 값을 보여 주고, 부팅 단위로 로그를 갈라 보려면 journalctl 을 쓴다.
journalctl --list-boots
journalctl -b # 현재 부팅
journalctl -b -1 # 직전 부팅
직전 부팅의 로그 끝을 보면 정상 종료였는지 전원 차단이었는지 구분할 수 있다. 정상 종료면 Stopping ... · Reached target Shutdown 이 남고, 갑자기 끊긴 경우에는 그런 줄 없이 로그가 끝난다.
top · vmstat 의 sy(system) 는 커널 모드에서 쓴 CPU 시간이다. 시스템 콜, 인터럽트 처리, 블록 I/O, 네트워크 스택, 컨텍스트 스위치가 여기에 들어간다. 애플리케이션 연산은 us(user) 로 잡힌다.
일반적인 서버 워크로드에서 sy 가 한 자릿수를 넘어 30% 대에 머무르면, 응용 코드보다 커널 경로에서 시간을 쓰고 있다는 뜻이므로 원인을 찾아야 한다. 흔한 원인은 다음과 같다.
확인 순서는 다음과 같다.
vmstat 1 5 # sy, cs(컨텍스트 스위치), wa(I/O 대기)
mpstat -P ALL 1 5 # 코어별로 %sys 가 한쪽에 몰렸는지
iostat -x 1 5 # %util, await 로 디스크 병목 확인
pidstat -w 1 5 # 컨텍스트 스위치가 많은 프로세스
perf top # 어떤 커널 함수가 CPU 를 쓰는지
mpstat · iostat · pidstat 은 sysstat 패키지에 들어 있다.
정상 경로는 systemctl poweroff · systemctl reboot 다. 아래는 서비스 정지를 기다리지 않고 바로 끊는 명령이므로 파일시스템 정합성을 잃을 수 있다.
poweroff -f # 종료 스크립트를 건너뛴다
reboot -f
systemctl poweroff --force --force # force 를 두 번 주면 커널에 직접 요청한다
shutdown -h now 는 강제가 아니라 대기 시간만 0 으로 준 정상 종료다.
윈도우에서는 shutdown 명령의 /f 가 실행 중인 프로그램을 강제로 닫는 옵션이다.
shutdown /s /f /t 0 # 즉시 종료
shutdown /r /f /t 0 # 즉시 재부팅
RHEL 8 · Rocky Linux 8 이후로 network 서비스는 기본 설치에 없다. 네트워크는 NetworkManager 가 관리하므로 재시작 대상도 그쪽이다.
systemctl restart NetworkManager
인터페이스 하나만 내렸다 올리려면 연결 이름을 확인한 뒤 nmcli 를 쓴다. 원격 접속 중이라면 세션이 끊기므로 콘솔이나 별도 경로를 확보하고 실행한다.
nmcli connection show
nmcli connection down ens192
nmcli connection up ens192
systemctl restart network 가 필요한 환경은 network-scripts 패키지를 따로 설치해 ifcfg 방식을 쓰는 경우뿐이다. RHEL 9 에서는 network-scripts 자체가 제거됐으므로 이 경로가 없다.