“마지막”명령 : 최신 사용자 로그인을 표시하는 방법? 아시다시피, last명령은 모든 사용자의 최근 로그인을 보여줍니다.

아시다시피, last명령은 모든 사용자의 최근 로그인을 보여줍니다. 그러나 내 PC (CentOS)는 대략 1 년 동안 사용되었으며 많은 사용자가 기록되었습니다. last명령 을 사용하려고했지만 2013 년 6 월부터 2013 년 9 월까지만 표시되었습니다.

제 질문은 최근에 로그인 한 최신 사용자를 어떻게 표시 할 수 있습니까 (2013 년 12 월부터 2014 년 1 월까지)?



답변

last일반적으로 로그 파일에서 읽고 /var/log/wtmp과거에 사용자가 성공적으로 로그인 한 항목을 인쇄합니다. 마지막으로 로그인 한 사용자 항목이 맨 위에 표시되도록 출력됩니다. 귀하의 경우 아마도 이것 때문에 통지가 나지 않았습니다.

파일 /var/log/wtmp이 마지막으로 작성된 시간 을 확인하기 위해 다음 명령을 사용할 수 있습니다 stat.

stat /var/log/wtmp

출력을 반대로 인쇄하기 위해 GNU tac다음과 같이 last의 출력을 (cat의 반대쪽)에 파이프 할 수 있습니다 .

last | tac

답변

lastlogLinux 에서 명령 명령을 사용할 수도 있습니다 . 사용자 로그인 로그를 볼 때 날짜 범위에 대해 더 세밀한 제어를 제공합니다.

lastlog 맨 페이지에서 발췌

   lastlog - reports the most recent login of all users or of a given user

지난 100 일 동안 시스템에 로그인 한 사용자를 찾습니다.

$ lastlog -b 0 -t 100
Username         Port     From             Latest
sam              pts/0    pegasus          Wed Jan  8 20:32:25 -0500 2014
joe              pts/0    192.168.1.105    Thu Dec 12 12:47:11 -0500 2013

이것은이 사용자가이 시스템에 마지막으로 로그인 한 시간을 나타냅니다. 시간 범위는 지난 100 일을 나타냅니다. 오늘 전 ( -b 0) 및 100 일 전 ( -t 100).

또한 범위를 생략하고 로그인 한 모든 사용자와 마지막으로 로그인 한 시간을 확인하여 모든 사용자를 표시 할 수도 있습니다.


답변

이 스크립트를 사용해보십시오 :

for user in $( awk -F: '{ print $1}' /etc/passwd)
do
lastlog=$(sudo lsuser -a time_last_login $user | awk -F'=' '{print $NF}')
echo "$user         \c"; perl -le "print scalar localtime($lastlog);"
done