Linux檢視本機登陸使用者資訊(w、who、last和lastlog命令)

2020-07-16 10:04:37
如果我們想要知道 Linux 伺服器上目前已經登入的使用者資訊,則可以使用 w 或 who 命令來進行查詢。

w 命令

先看看 w 命令,如下:

[[email protected] ~]# w
09:54:22 up 9:50, 2 users, load average:0.00, 0.00, 0.00
USER TTY FROM [email protected] IDLE JCPU PCPU WHAT
root tty1 - 09:53 57.00s 0.02s 0.02s -bash
root pts/0 192.168.0.108 09:53 0.00s 0.09s 0.06s w


解釋一下這個命令的輸出。
  • 第一行其實和 top 命令的第一行非常類似,主要顯示了系統當前時間、開機多久(up)、有多少使用者登入(users),以及 1 分鐘、5 分鐘、15 分鐘前的平均負載(load average)。
  • 第二行是專案的說明,從第三行開始每行代表一個使用者。這些專案具體如下:
    1. USER:登入的使用者名稱。
    2. TTY:登入終端。
    3. FROM:從哪個 IP 地址登入。
    4. [email protected]:登入時間。
    5. IDLE:使用者閒置時間。
    6. JCPU:和該終端連線的所有進程佔用的 CPU 運算時間。這個時間裡並不包括過去的後台作業時間,但是包括當前正在執行的後台作業所佔用的時間。
    7. PCPU:當前進程所佔用的 CPU 運算時間。
    8. WHAT:當前正在執行的命令。

從 w 命令的輸出中已知,Linux 伺服器上已經登入了兩個 root 使用者,一個是從本地終端 1 登入的(tty1),另一個是從遠端終端 1 登入的(pts/0),登入的來源 IP 是 192.168.0.108。

who命令

who 命令比 w 命令稍微簡單,也可以用來檢視系統中已經登入的使用者。命令如下:

[[email protected] ~]# who
root tty1 2013-06-07 09:53
root pts/0 2013-06-07 09:53 (192.168.0.108)
#使用者名稱 登入終端 登入時間(登入來源IP)

如果原先登入的使用者現在已經退出登入,那麼是否還能檢視呢?當然可以,這時就需要使用 last 和 lastlog 命令了。

last命令

我們先來看看 last 命令,如下:

[[email protected] ~]# last
#查詢當前已經登入和過去登入的使用者資訊
root pts/0 192.168.0.108 Fri Jun 7 09:53 still logged in
root tty1 Fri Jun 7 09:53 still logged in
root pts/0 192.168.0.101 Fri Jun 7 06:53 - 09:52 (02:59)
root pts/1 192.168.0.103 Fri Jun 7 04:12 - 04:30 (00:18)
#使用者名稱 登入終端 登入IP 登入時間 - 退出時間(線上時間)
reboot system boot 2.6.32-279.el6.i Thu Jun 6 23:53 - 00:03 (00:09)
#還能看到系統的重新啟動時間
…省略部分輸出…

last 命令預設是去讀取 /var/log/wtmp 紀錄檔檔案的,這是一個二進位制檔案,不能直接用 vi 編輯,只能通過 last 命令呼叫。

lastlog命令

再來看看 lastlog 命令,如下:

[[email protected] ~]# lastlog
#檢視系統中所有使用者的最後一次登入時間、登入埠和來源IP
使用者名稱 埠 來自 最後登入時間
root pts/0 192.168.0.108 五 6月 7 09:53:46 +0800 2013
bin **從未登入過**
daemon **從未登入過**
adm **從未登入過**
lp **從未登入過**
sync **從未登入過**
…省略部分輸出…

lastlog 命令預設是去讀取 /var/log/lastlog 紀錄檔檔案的,這個檔案同樣是二進位制檔案,不能直接用 vi 編輯,需要使用 lastlog 命令呼叫。