Linux / 명령어 / uptime - 시스템 가동 시간과 부하 확인

uptime은 현재 시각, 시스템이 마지막 부팅 후 실행된 시간, 로그인 사용자 수, 최근 1분·5분·15분의 평균 부하를 한 줄로 보여 주는 명령어입니다. 서버가 언제 재부팅됐는지 빠르게 확인하거나 부하가 일시적인지 지속적인지 판단할 때 출발점으로 사용합니다.

uptime

다만 평균 부하는 CPU 사용률과 같은 값이 아닙니다. 실행 가능 상태이거나 중단 불가능한 I/O 대기 상태인 작업의 평균적인 수를 나타내므로, CPU 개수와 디스크·네트워크 상태를 함께 봐야 정확히 해석할 수 있습니다.

uptime 출력 항목 읽는 방법

일반적인 출력 형태는 다음과 같습니다. 실제 시각과 숫자는 시스템마다 다릅니다.

14:32:10 up 12 days, 3:41, 2 users, load average: 0.42, 0.51, 0.48

procps-ng uptime 공식 매뉴얼은 이 한 줄이 현재 시각, 가동 시간, 로그인 사용자 수, 1분·5분·15분 평균 부하로 구성된다고 설명합니다.

출력 예 의미 해석할 때 주의할 점
14:32:10 시스템의 현재 시각 시간대와 시간 동기화 설정의 영향을 받습니다.
up 12 days, 3:41 마지막 부팅 후 경과 시간 컨테이너에서는 호스트 가동 시간이 보일 수 있습니다.
2 users 로그인 세션 수 고유한 사람 수가 아니라 로그인 기록을 기준으로 셉니다.
0.42, 0.51, 0.48 1분·5분·15분 평균 부하 논리 CPU 수로 정규화된 백분율이 아닙니다.

각 항목을 자세히 해석하기

현재 시각

맨 앞의 값은 시스템이 인식하는 현재 시각입니다. 로그 시각과 맞지 않는다면 timedatectl로 시간대와 동기화 상태를 확인하세요.

timedatectl status

시스템 가동 시간

up 뒤에는 마지막 부팅 후 경과 시간이 표시됩니다. 예상보다 짧다면 계획되지 않은 재부팅, 커널 오류, 전원 문제 또는 관리 작업이 있었는지 시스템 로그와 부팅 기록을 확인해야 합니다.

uptime -p
uptime -s

-p는 읽기 쉬운 경과 시간을, -s는 시스템이 시작된 시각을 표시합니다. 배포판에 설치된 procps-ng 버전에 따라 지원 옵션이 다를 수 있으므로 uptime --help로 확인하세요.

로그인 사용자 수

사용자 수는 현재 로그인된 세션을 바탕으로 계산됩니다. 같은 사용자가 SSH와 콘솔에 여러 번 로그인하면 여러 세션으로 집계될 수 있습니다. 누가 접속했는지 확인하려면 w 또는 who를 사용합니다.

w
who

Load average는 무엇인가요?

세 숫자의 시간 범위

평균 부하(load average)의 세 값은 각각 최근 1분, 5분, 15분 동안의 부하를 나타냅니다. 단순 산술 평균이 아니라 최근 상태에 더 큰 가중치를 주는 지수 이동 평균이므로, 특정 시점의 작업 수를 그대로 표시하는 값은 아닙니다.

  • 1분 값이 5분·15분 값보다 크면 최근 부하가 증가하는 흐름일 수 있습니다.
  • 1분 값이 더 작으면 이전의 높은 부하가 완화되는 흐름일 수 있습니다.
  • 세 값이 모두 비슷하게 높으면 부하가 지속되고 있을 가능성이 있습니다.

CPU 개수와 함께 비교하기

평균 부하는 CPU 개수로 정규화되지 않습니다. 먼저 논리 CPU 수를 확인한 뒤 부하와 비교하세요.

nproc

예를 들어 논리 CPU가 4개인 시스템에서 부하가 1.00이라면, CPU 1개짜리 시스템의 1.00과 의미가 다릅니다. 단순한 경험칙으로 부하가 논리 CPU 수와 비슷하면 실행 가능한 작업이 CPU 용량을 상당 부분 사용하고 있을 수 있지만, 이것만으로 병목을 확정할 수는 없습니다.

CPU 사용률과 다른 이유

Linux의 평균 부하는 CPU에서 실행 중이거나 실행을 기다리는 작업뿐 아니라 중단 불가능한 상태에서 I/O를 기다리는 작업도 포함합니다. 따라서 CPU 사용률이 낮아도 느린 디스크나 네트워크 스토리지 때문에 평균 부하가 높아질 수 있습니다.

부하가 높다면 CPU 사용률, 실행 큐, I/O 대기, 메모리와 스왑을 함께 확인해야 합니다.

top
vmstat 1
iostat -xz 1
free -h

iostat는 보통 sysstat 패키지에 포함되며, 설치되어 있지 않을 수 있습니다.

자주 사용하는 uptime 옵션

읽기 쉬운 가동 시간 표시

uptime --pretty

-p 또는 --pretty는 가동 시간만 사람이 읽기 쉬운 문장으로 출력합니다. 스크립트에서 언어에 영향을 받는 문장을 파싱하는 용도로는 적합하지 않습니다.

부팅 시각 확인

uptime --since

-s 또는 --since는 시스템이 시작된 시각을 YYYY-MM-DD HH:MM:SS 형태로 표시합니다. 현재 시각을 기준으로 계산한 값이므로 시간 설정이 크게 변경된 시스템에서는 로그의 부팅 기록과 함께 확인하세요.

컨테이너와 원시 형식 옵션

최신 procps-ng에는 컨테이너 가동 시간을 요청하는 --container와 현재 시각·가동 시간을 초 단위로 표시하는 --raw 옵션이 있습니다.

uptime --container
uptime --raw

이 옵션은 오래된 배포판의 procps-ng에는 없을 수 있습니다. 컨테이너 런타임과 커널이 관련 정보를 제공하지 않으면 기대한 값이 나오지 않을 수도 있으므로 실제 환경에서 지원 여부를 확인해야 합니다.

평균 부하가 높을 때 확인할 순서

추세와 CPU 수부터 확인하기

  1. uptime의 1분·5분·15분 값으로 증가·감소·지속 여부를 봅니다.
  2. nproc로 논리 CPU 수를 확인합니다.
  3. top이나 ps로 CPU를 많이 쓰는 프로세스를 찾습니다.
  4. vmstat와 iostat로 실행 큐와 I/O 대기를 확인합니다.
  5. free로 사용 가능한 메모리와 스왑 사용량을 확인합니다.

한 번의 숫자로 장애를 단정하지 않기

짧은 압축 작업이나 백업 때문에 1분 부하가 잠깐 높아지는 것은 정상일 수 있습니다. 반대로 15분 값까지 계속 상승하고 응답 시간이 나빠진다면 지속적인 병목일 가능성이 큽니다. 기준값은 CPU 수뿐 아니라 평소 트래픽, 작업 유형, 저장장치 성능과 서비스 지연 시간에 맞춰 정해야 합니다.

정기적인 관찰이 필요하면 단발성 uptime 출력보다 모니터링 시스템에서 평균 부하, CPU, I/O, 메모리, 애플리케이션 지표를 함께 수집하는 편이 좋습니다.

컨테이너와 가상 머신에서 주의할 점

가상 머신의 uptime은 보통 해당 게스트 운영체제의 가동 시간을 나타냅니다. 컨테이너는 호스트 커널을 공유하므로 도구와 환경에 따라 호스트의 가동 시간이 표시될 수 있습니다. 최신 procps-ng의 --container 지원 여부, 컨테이너 런타임의 네임스페이스 구성, 모니터링 시스템의 데이터 출처를 함께 확인하세요.

또한 컨테이너에 할당된 CPU 제한과 nproc가 보고하는 값이 항상 운영자가 기대한 용량과 같지는 않을 수 있습니다. 컨테이너 오케스트레이터의 CPU 요청·제한과 스로틀링 지표도 함께 보는 것이 안전합니다.

자주 묻는 질문

load average 1.00이면 CPU 사용률 100%인가요?

아닙니다. 평균 부하는 실행 가능 상태와 중단 불가능한 I/O 대기 상태의 작업 수를 반영하며 CPU 개수로 정규화되지 않습니다. CPU 사용률은 top, mpstat 같은 도구로 별도로 확인해야 합니다.

가동 시간이 갑자기 짧아진 이유는 무엇인가요?

대부분 시스템이 재부팅됐기 때문입니다. 계획된 업데이트였는지, 전원 문제나 커널 오류가 있었는지 journalctl --list-boots, 시스템 로그와 운영 기록을 확인하세요. 로그 보존 설정에 따라 이전 부팅 기록이 없을 수도 있습니다.

로그인 사용자 수가 실제 사람 수와 다른 이유는 무엇인가요?

한 사람이 여러 SSH·콘솔 세션을 열면 각각 집계될 수 있고, 로그인 기록이 비정상적으로 남은 경우도 있습니다. w나 who로 터미널과 로그인 시각을 확인하세요.

uptime을 계속 새로 확인하려면 어떻게 하나요?

watch로 일정 간격마다 실행할 수 있습니다.

watch -n 5 uptime

장기간 추세와 알림이 필요하다면 출력 화면을 지켜보는 대신 모니터링 시스템을 사용하세요.

정리

uptime은 재부팅 여부와 부하 추세를 빠르게 확인하는 첫 단계입니다. 출력의 세 평균 부하는 1분·5분·15분 구간을 나타내며, CPU 사용률이나 백분율이 아닙니다.

평균 부하가 높을 때는 논리 CPU 수, CPU 사용률, 실행 큐, I/O 대기, 사용 가능한 메모리와 스왑을 함께 확인하세요. 메모리 항목을 해석하는 방법은 free 명령어 사용법에서 이어서 볼 수 있습니다.

같은 카테고리의 다른 글
Linux / 명령어 / basename - 경로에서 마지막 이름 추출

Linux / 명령어 / basename - 경로에서 마지막 이름 추출

Linux basename 명령어로 경로에서 마지막 파일명이나 디렉터리 이름을 추출하고 접미사를 제거하는 방법을 설명합니다. 여러 경로와 안전한 셸 스크립트 처리 방법도 정리합니다.

Linux 강좌 / 파일 비교하기 - diff와 cmp의 차이와 실습

Linux 강좌 / 파일 비교하기 - diff와 cmp의 차이와 실습

diff와 cmp로 두 파일의 차이를 확인하고 unified diff를 읽는 법을 익힙니다. 내용이 다른 경우와 명령 실행 오류의 종료 상태도 구별합니다.

Linux / 명령어 / modinfo - 커널 모듈의 설명과 매개변수 확인

Linux / 명령어 / modinfo - 커널 모듈의 설명과 매개변수 확인

Linux modinfo 명령어의 기능과 기본 문법을 설명합니다. 실제 사용 예제, 주요 옵션과 작업 전 확인할 점을 알아봅니다.

Linux / 명령어 / grep - 텍스트에서 원하는 문자열 검색

Linux / 명령어 / grep - 텍스트에서 원하는 문자열 검색

Linux grep 명령어로 파일과 명령 출력에서 문자열·정규 표현식을 검색하는 방법을 설명합니다. -F, -E, -r, 문맥 출력, 종료 상태와 로그 검색 예제를 정리합니다.

Linux / 명령어 / clear - 터미널 화면 정리

Linux / 명령어 / clear - 터미널 화면 정리

Linux clear 명령어로 터미널 화면을 정리하는 방법을 설명합니다. 스크롤백을 보존하는 -x 옵션과 Ctrl+L·reset·tput의 차이, TERM 오류 해결법을 다룹니다.

Linux / 명령어 / gzip - 파일을 gzip 형식으로 압축하기

Linux / 명령어 / gzip - 파일을 gzip 형식으로 압축하기

Linux gzip 명령어의 용도와 기본 문법을 알아봅니다. 파일 처리 예제, 주요 옵션과 원본 보존·덮어쓰기 주의점을 설명합니다.

Linux / 명령어 / tree - 디렉터리 구조를 트리 형태로 출력

Linux / 명령어 / tree - 디렉터리 구조를 트리 형태로 출력

Linux tree 명령어로 디렉터리와 파일 구조를 계층적으로 확인하는 방법을 설명합니다. 설치, 깊이 제한, 숨김 파일, 제외 패턴, 크기·권한 표시와 JSON 저장 방법까지 정리합니다.

Linux / 명령어 / tac - 파일을 마지막 줄부터 역순 출력

Linux / 명령어 / tac - 파일을 마지막 줄부터 역순 출력

Linux tac 명령어로 파일의 줄 순서를 뒤집어 마지막 줄부터 출력하는 방법을 설명합니다. 여러 파일 처리, 구분자 변경과 로그 확인 예제를 함께 정리합니다.

Linux / 명령어 / time - 명령 실행 시간 측정

Linux / 명령어 / time - 명령 실행 시간 측정

Linux time 명령어로 명령과 파이프라인의 실행 시간 및 자원 사용량을 측정하는 방법을 설명합니다. Bash 예약어와 GNU /usr/bin/time의 차이, 출력 저장과 정확한 비교 방법을 정리합니다.

Linux / 명령어 / unalias - 명령어 별칭 삭제

Linux / 명령어 / unalias - 명령어 별칭 삭제

Bash unalias 명령어로 특정 별칭이나 모든 별칭을 제거하는 방법을 설명합니다. 일시 제거와 영구 제거, 별칭 우회 및 함수·변수 삭제와의 차이를 정리합니다.