Linux / 명령어 / last - 로그인 기록과 시스템 부팅 이력 확인

last는 시스템의 로그인·로그아웃 이력을 최근 기록부터 확인하는 명령어입니다. 기본적으로 /var/log/wtmp를 읽어 사용자, 터미널, 원격 호스트, 로그인 시각, 로그아웃 시각과 세션 지속 시간을 보여 줍니다.

특정 사용자나 기간의 접속 이력을 확인하고 재부팅·비정상 종료 시점을 살펴보는 데 유용합니다. 다만 wtmp가 기록되지 않거나 로테이션·삭제된 기간은 조회할 수 없으며, 이 기록만으로 보안 사고 여부를 단정해서는 안 됩니다.

last 명령어란?

last는 wtmp 로그인 기록을 뒤에서부터 검색해 최신 항목을 먼저 출력합니다. 일반적으로 로그인한 사용자 이름, 사용한 터미널(tty 또는 pts), 접속한 호스트나 IP 주소, 로그인·로그아웃 시각과 세션 시간을 확인할 수 있습니다.

wtmp는 텍스트 로그가 아니라 시스템에서 정의한 레코드 형식의 파일입니다. 따라서 cat이나 텍스트 편집기로 읽기보다 last처럼 형식을 이해하는 도구를 사용해야 합니다. 배포판과 시스템 설정에 따라 파일 위치, 기록 여부와 보존 기간이 다를 수 있습니다.

기본 문법과 출력 읽기

기본 문법은 다음과 같습니다. 사용자 이름이나 터미널을 생략하면 사용 가능한 전체 기록을 표시합니다.

last [옵션] [사용자명|터미널...]

가장 최근의 로그인 기록부터 확인하려면 다음과 같이 실행합니다.

last
mina     pts/1        192.0.2.24       Fri Sep 18 21:10 - 22:42  (01:31)
alex     tty1                          Fri Sep 18 19:04 - 19:35  (00:31)
reboot   system boot  6.12.0           Fri Sep 18 18:58   still running

첫 번째 열은 사용자, 두 번째 열은 터미널, 세 번째 열은 원격 호스트 또는 커널 정보, 그 뒤는 접속 시각과 종료 상태입니다. 원격 주소가 없는 로컬 콘솔 로그인은 호스트 열이 비어 있을 수 있습니다.

출력 맨 아래의 wtmp begins는 현재 읽은 파일에서 확인할 수 있는 가장 오래된 시점을 나타냅니다. 시스템의 최초 설치 시점이나 실제 최초 로그인 시점이라고 단정할 수는 없습니다.

자주 사용하는 last 옵션

옵션 기능 활용 예
-n N, --limit N 최대 N개 항목 출력 last -n 20
-s 시간, --since 시간 지정 시각 이후의 상태 표시 last -s 2026-09-01
-t 시간, --until 시간 지정 시각까지의 상태 표시 last -t 2026-09-19
-p 시간, --present 시간 지정 시각에 접속 중이던 사용자 표시 last -p '2026-09-18 21:00'
-F, --fulltimes 로그인과 로그아웃의 전체 날짜·시각 표시 연도가 생략되지 않은 상세 확인
--time-format iso ISO 8601 형식과 시간대 표시 다른 시스템의 기록과 비교할 때 유용
-i, --ip 원격 호스트를 숫자 IP로 표시 DNS 이름 대신 기록된 주소 확인
-a, --hostlast 호스트 필드를 마지막 열로 이동 긴 날짜 출력과 함께 가독성 개선
-R, --nohostname 호스트 필드를 숨김 로컬 세션과 시각에 집중
-x, --system 종료와 런레벨 변경 기록도 표시 재부팅 전후 상태 조사
-f 파일, --file 파일 다른 wtmp 파일 읽기 last -f /var/log/wtmp.1

옵션의 이름과 지원 범위는 last 구현에 따라 다를 수 있습니다. 이 글은 Linux에서 널리 쓰이는 util-linux 구현을 기준으로 하며, 최신 정의는 util-linux last 공식 매뉴얼 페이지에서 확인할 수 있습니다.

원하는 로그인 기록만 필터링하기

특정 사용자 기록 보기

사용자 이름을 인수로 추가하면 해당 사용자의 이력만 표시합니다.

last mina

사용자 이름을 여러 개 적으면 그중 하나와 일치하는 항목을 볼 수 있습니다. 이름이 길면 기본 출력에서 잘릴 수 있으므로 util-linux의 -w 또는 --fullnames 옵션으로 전체 필드를 표시할 수 있습니다.

last -w mina alex

특정 터미널 기록 보기

터미널 이름을 지정하면 해당 터미널에서 생성된 세션만 확인할 수 있습니다. pts/0은 SSH와 같은 가상 터미널에서 흔히 보이며, tty1은 로컬 가상 콘솔을 나타낼 수 있습니다.

last pts/0

매뉴얼에 따르면 tty0은 0처럼 줄여 쓸 수 있지만, 문서와 스크립트에서는 전체 터미널 이름을 쓰는 편이 의도가 분명합니다.

출력 개수 제한하기

최근 기록 일부만 빠르게 확인하려면 -n으로 최대 항목 수를 지정합니다.

last -n 10

-10처럼 줄여 쓸 수도 있지만, 다른 옵션과 구분하기 쉬운 -n 10 형식이 스크립트와 문서에서 읽기 좋습니다.

기간과 특정 시각으로 조회하기

시작 시각과 종료 시각 지정하기

-s는 조회 시작 시각, -t는 조회 종료 시각을 지정합니다. 두 옵션을 조합하면 특정 기간을 좁힐 수 있습니다.

last -s '2026-09-01 00:00' -t '2026-09-19 00:00'

날짜만 지정하면 일반적으로 해당 날짜의 00:00:00으로 해석됩니다. 하루 전체를 조회하려면 다음 날 00:00을 종료 경계로 지정하는 방법이 명확합니다.

상대 시간 표현 사용하기

util-linux last는 today, yesterday, now와 -7days 같은 상대 시간 표현을 지원합니다.

last -s yesterday
last -s -7days

자동화 결과를 반복해서 비교해야 한다면 실행 시점에 따라 범위가 달라지는 상대 표현보다 명시적인 날짜와 시간대를 사용하는 편이 재현성이 좋습니다.

특정 시각에 로그인 중이던 사용자 찾기

-p는 지정한 시각에 접속 상태였던 사용자를 보여 줍니다. 장애 발생 시각에 유지 중이던 세션을 확인할 때 참고할 수 있습니다.

last -p '2026-09-18 21:30'

결과는 wtmp에 남은 로그인·로그아웃 레코드를 기준으로 계산되므로 누락되거나 손상된 기록까지 복원하지는 못합니다.

시간 형식을 명확하게 표시하기

전체 로그인·로그아웃 시각 보기

기본 출력은 화면 폭을 줄이기 위해 연도나 일부 시간을 생략할 수 있습니다. -F는 로그인과 로그아웃의 전체 날짜와 시각을 표시합니다.

last -F -n 10

ISO 형식과 시간대 함께 보기

다른 서버의 로그와 비교하거나 외부로 결과를 전달할 때는 --time-format iso가 유용합니다. ISO 형식에는 시간대 정보가 포함되어 시각 해석의 혼동을 줄일 수 있습니다.

last --time-format iso -n 10

여러 시스템의 사건 순서를 비교할 때는 각 서버의 시스템 시각과 시간대 설정이 올바른지도 함께 확인해야 합니다.

재부팅과 시스템 종료 기록 확인하기

재부팅 이력 보기

reboot은 실제 사용자 계정이 아니라 시스템이 부팅될 때 기록되는 의사 사용자(pseudo user)입니다. 다음 명령은 현재 wtmp 파일에 남아 있는 재부팅 이력을 보여 줍니다.

last reboot

표시 범위는 현재 보존된 wtmp 데이터까지입니다. 오래된 재부팅이 보이지 않는다면 기록이 없었던 것이 아니라 로테이션되었을 가능성도 확인해야 합니다.

종료와 런레벨 변경까지 표시하기

-x는 시스템 종료와 런레벨 변경 기록을 일반 로그인 기록과 함께 표시합니다. 재부팅 직전 정상 종료가 기록되었는지 살펴볼 때 도움이 됩니다.

last -x -n 30

last shutdown으로 종료 항목만 좁힐 수도 있습니다. 하지만 비정상 전원 차단처럼 종료 레코드를 남기지 못한 상황에서는 정상적인 shutdown 항목이 없을 수 있습니다.

출력에 표시되는 상태 해석하기

표시 일반적인 의미 확인할 사항
still logged in 로그아웃 레코드가 아직 없음 현재 세션인지 who나 w로 재확인
still running 해당 부팅 세션이 종료되지 않음 현재 부팅인지 uptime으로 확인
crash 정상 로그아웃 없이 부팅 세션이 끝난 것으로 해석 커널·저널·하드웨어 로그와 함께 조사
gone - no logout 대응하는 로그아웃 레코드를 찾지 못함 로그 손실, 재부팅, 세션 기록 문제 가능성 확인
wtmp begins 현재 입력 파일에서 가장 오래된 기록의 시작 로테이션된 이전 파일 존재 여부 확인

각 표시는 조사 단서이지 원인을 확정하는 증거가 아닙니다. 예를 들어 crash가 보인다고 해서 하드웨어 고장만 의미하는 것은 아니며, 커널 로그와 systemd 저널, 가상화 플랫폼 이벤트 등을 함께 확인해야 합니다.

이전 wtmp 파일과 로그 로테이션

다른 기록 파일 읽기

-f는 기본 파일 대신 지정한 wtmp 형식의 파일을 읽습니다. 배포판의 로그 로테이션 설정에 따라 이전 기록이 /var/log/wtmp.1 등에 남아 있을 수 있습니다.

last -f /var/log/wtmp.1

util-linux에서는 -f를 여러 번 지정해 여러 파일을 처리할 수도 있습니다. 실제 파일명과 권한은 시스템 설정을 먼저 확인하세요.

압축된 기록 처리 시 주의하기

로테이션된 파일이 gzip 등으로 압축되어 있다면 last가 압축 파일을 직접 해제해 읽는다고 가정하면 안 됩니다. 원본을 훼손하지 말고 접근 권한이 제한된 작업 공간에 복사·해제한 뒤 -f로 읽으며, 조사 목적이라면 원본의 해시와 보존 절차도 기록하세요.

실패한 로그인 시도 확인하기

lastb와 btmp의 관계

lastb는 last와 비슷하지만 기본적으로 /var/log/btmp를 읽어 실패한 로그인 시도를 표시합니다. 배포판에 따라 관리자 권한이 필요할 수 있습니다.

sudo lastb -n 20

실패가 반복된 원격 주소와 사용자 이름을 살펴보는 데 도움이 되지만, 인터넷에 노출된 서버에서는 자동화된 스캔이 흔하므로 개별 시도만으로 침해를 단정하지 마세요.

성공 기록과 함께 비교하기

같은 시간대의 성공 로그인, SSH 인증 로그, 방화벽과 접근 제어 기록을 함께 비교해야 의미 있는 판단이 가능합니다.

last --time-format iso -s '2026-09-18 00:00'
sudo lastb --time-format iso -s '2026-09-18 00:00'

인증 로그의 저장 위치와 조회 방법은 배포판과 로깅 구성에 따라 다릅니다. systemd 저널을 사용하는 시스템에서는 관련 서비스 단위의 저널도 함께 확인하세요.

보안 점검에 활용하는 순서

조회 범위와 시간대를 먼저 고정하기

조사할 사건의 시작·종료 시각과 서버 시간대를 기록합니다. 가능하면 --time-format iso를 사용해 출력에 시간대 정보를 포함하고, 여러 서버의 시각 동기화 상태도 확인합니다.

사용자·호스트·터미널을 교차 확인하기

예상하지 못한 사용자, 평소와 다른 원격 주소, 비정상적인 접속 시간과 세션 길이를 살펴봅니다. IP 주소의 소유자나 위치는 변경될 수 있고 프록시·VPN·NAT의 영향을 받으므로 주소 하나만으로 사용자를 확정하지 않습니다.

재부팅과 로그 공백 확인하기

last reboot, last -x와 wtmp begins를 확인해 기록의 범위와 부팅 경계를 파악합니다. 로그 로테이션 시각과 비교해 설명되지 않는 공백이 있는지 확인하세요.

다른 증거와 함께 판단하기

last 결과를 SSH 인증 로그, systemd 저널, 명령 감사 로그, 방화벽·VPN·클라우드 접속 기록과 교차 검증합니다. 사고가 의심되면 원본 로그를 변경하지 말고 조직의 대응 절차에 따라 보존해야 합니다.

last 기록의 한계

  • 로컬 파일 의존: wtmp가 없거나 서비스가 기록하지 않으면 결과가 비어 있을 수 있습니다.
  • 보존 기간 제한: 로그 로테이션과 삭제 이후의 기록은 현재 파일에서 조회할 수 없습니다.
  • 변조 가능성: 충분한 권한을 가진 공격자는 로컬 기록을 변경하거나 삭제할 수 있습니다.
  • 시각 의존: 시스템 시계 변경이나 잘못된 시간대 설정은 사건 순서와 세션 시간을 혼란스럽게 만들 수 있습니다.
  • 환경 차이: 컨테이너, 최소 설치 환경, 일부 원격 접속 방식은 기대한 wtmp 항목을 남기지 않을 수 있습니다.

따라서 last는 빠른 현황 파악과 조사 시작점으로는 유용하지만, 완전한 감사 로그나 중앙 보안 기록을 대체하지 않습니다.

last와 비슷한 명령어 비교

명령어 주요 목적 적합한 상황
last 과거 로그인·로그아웃 이력 wtmp에 남은 세션과 부팅 기록 조사
lastb 실패한 로그인 이력 btmp에 기록된 인증 실패 확인
who 현재 로그인 사용자 현재 세션의 사용자와 터미널 확인
w 현재 사용자와 실행 활동 로그인 사용자, 유휴 시간과 프로세스 확인
lastlog 또는 lslogins 계정별 마지막 로그인 오랫동안 사용하지 않은 계정이나 마지막 접속 확인

자주 묻는 질문

last에 아무 결과도 나오지 않는 이유는 무엇인가요?

/var/log/wtmp가 없거나 비어 있거나, 시스템이 해당 파일에 로그인 기록을 남기지 않는 구성일 수 있습니다. 파일 존재 여부와 권한, 로깅 정책을 확인하세요. 빈 결과가 로그인 이력이 전혀 없었다는 뜻은 아닙니다.

still logged in은 현재 접속 중이라는 뜻인가요?

해당 로그인에 대응하는 로그아웃 레코드가 없다는 뜻입니다. 실제 현재 세션은 who, w, loginctl 등으로 다시 확인하는 것이 좋습니다. 비정상 종료나 기록 누락으로 오래된 세션이 그렇게 보일 수도 있습니다.

오래된 로그인 기록은 어떻게 확인하나요?

로그 로테이션된 wtmp.1 같은 파일이 남아 있다면 last -f 파일명으로 읽을 수 있습니다. 압축된 파일은 보호된 복사본을 해제해 사용하고, 원본을 직접 변경하지 마세요.

last 결과만으로 해킹 여부를 판단할 수 있나요?

아닙니다. 예상하지 못한 로그인은 중요한 단서지만 로컬 wtmp 기록은 불완전하거나 변조될 수 있습니다. 인증 로그, 네트워크 기록, 명령 감사 로그와 시스템 변경 내역을 함께 분석해야 합니다.

정리

최근 로그인 이력은 last, 특정 사용자는 last 사용자명, 재부팅 기록은 last reboot, 실패한 로그인은 lastb로 확인합니다. 기간은 -s와 -t, 특정 시점은 -p, 명확한 시간 표시는 --time-format iso를 활용할 수 있습니다.

last의 결과는 현재 남아 있는 wtmp 기록의 범위 안에서만 유효합니다. 보안 조사에서는 시간대와 로그 보존 범위를 먼저 확인하고 다른 기록과 교차 검증해야 합니다. 관련 기본 도구는 리눅스에서 자주 사용하는 명령어 목록에서 함께 살펴볼 수 있습니다.

같은 카테고리의 다른 글
Linux / 명령어 / xargs - 표준 입력을 명령 인수로 전달

Linux / 명령어 / xargs - 표준 입력을 명령 인수로 전달

Linux xargs 명령어의 기본 문법과 실제 사용 예제를 설명합니다. 주요 옵션과 결과를 해석할 때 주의할 점을 확인할 수 있습니다.

Linux / 명령어 / unxz - xz 압축 파일 풀기

Linux / 명령어 / unxz - xz 압축 파일 풀기

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

Linux / 명령어 / dd - 블록 단위 데이터 복사와 변환

Linux / 명령어 / dd - 블록 단위 데이터 복사와 변환

Linux dd 명령어로 파일과 블록 장치 데이터를 복사하고 변환하는 방법을 설명합니다. if와 of, 블록 크기, 진행률, 디스크 이미지 생성·복원 및 대상 장치 오지정 위험을 정리합니다.

Linux / 명령어 / systemctl - systemd 서비스 상태 확인과 관리

Linux / 명령어 / systemctl - systemd 서비스 상태 확인과 관리

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

Linux / 명령어 / apropos - 설명 키워드로 명령어 검색

Linux / 명령어 / apropos - 설명 키워드로 명령어 검색

apropos 명령어로 이름을 모르는 리눅스 명령과 매뉴얼을 기능 키워드로 찾는 방법을 설명합니다. 정규 표현식, 모든 키워드 일치, 섹션 제한과 검색 결과가 없을 때의 해결 방법을 다룹니다.

Linux / 명령어 / ip - 인터페이스·주소·라우팅 상태와 설정

Linux / 명령어 / ip - 인터페이스·주소·라우팅 상태와 설정

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

Linux / 명령어 / whatis - 명령어의 한 줄 설명 확인

Linux / 명령어 / whatis - 명령어의 한 줄 설명 확인

whatis 명령어로 매뉴얼 페이지의 한 줄 설명과 섹션을 확인하는 방법을 설명합니다. 정규 표현식·와일드카드 검색, apropos·type과의 차이 및 색인 문제 해결법을 정리합니다.

Linux 강좌 / 사용자·그룹과 파일 소유권 이해하기

Linux 강좌 / 사용자·그룹과 파일 소유권 이해하기

UID, GID, 기본·추가 그룹과 파일 소유권의 의미를 설명합니다. id, groups, getent, ls, stat으로 현재 계정과 파일의 소유 정보를 안전하게 확인합니다.

Linux 강좌 / 텍스트 검색과 가공 - grep, sort, uniq, cut, wc

Linux 강좌 / 텍스트 검색과 가공 - grep, sort, uniq, cut, wc

grep, sort, uniq, cut, wc로 텍스트를 찾고 정렬·중복 제거·필드 추출·개수 세기를 실습합니다. 명령 결과와 흔한 해석 오류도 설명합니다.

Linux / 명령어 / who - 현재 로그인 세션 확인

Linux / 명령어 / who - 현재 로그인 세션 확인

Linux who 명령어의 기본 문법과 실제 사용 예제를 설명합니다. 주요 옵션과 결과를 해석할 때 주의할 점을 확인할 수 있습니다.