Linux系統管理之free、w、who、last、lastlog命令講解
阿新 • • 發佈:2020-09-02
在我們日常Linux伺服器運維過程中,監控伺服器記憶體使用情況,多使用者登入情況的檢視這兩者都是經常要做的運維工作。
監控系統記憶體的使用情況命令:free
free 命令顯示系統記憶體的使用情況,包括實體記憶體、交換記憶體(swap)和核心緩衝區記憶體,在Linux系統監控的工具中,free命令是最經常使用的命令之一。free命令的基本格式如下:
$free [選項]
該命令選項如下表:
選項 | 含義 |
---|---|
-b | 以Byte為單位顯示記憶體使用情況 |
-k | 以KB為單位顯示記憶體使用情況 |
-m | 以MB為單位顯示記憶體使用情況 |
-g | 以GB為單位顯示記憶體使用情況 |
-o | 不顯示緩衝區調節列 |
-s<間隔秒數> | 持續觀察記憶體使用狀況 |
-t | 顯示記憶體總和列 |
-V | 顯示版本資訊 |
使用舉例
- 顯示記憶體使用情況
我們分別使用free
、free -m
、free -g
三個命令,來看看執行結果:
上圖執行結果中,總共有6列:
列名 | 含義 |
---|---|
total | 總計實體記憶體的大小 |
used | 已使用多大 |
free | 可用有多少 |
shared | 多個程序共享的記憶體總額 |
buff/cache | 磁碟快取的大小 |
available |
檢視登陸使用者資訊:w
、who
Linux 中,w
和 who
命令都可以檢視伺服器上目前已登入的使用者資訊,兩者的區別在於,w
who
命令格式:
$ who [選項]
選項 | 含義 |
---|---|
-a | 列出所有資訊,相當於所有選項。 |
-b | 列出系統最近啟動的時間日期。 |
-l | 列出所有可登陸的終端資訊。 |
-m | 僅列出關於當前終端的資訊,who -m 命令等同於 who am i。 |
-q | 列出在本地系統上的使用者和使用者數的清單。 |
-r | 顯示當前系統的執行級別。 |
-s | 僅顯示名稱、線路和時間欄位資訊,這是 who 命令的預設選項。 |
-u | 顯示當前每個使用者的使用者名稱、登陸終端、登陸時間、線路活動和程序標識。 |
-T 或 -w | 顯示 tty 終端的狀態,“+”表示對任何人可寫,“-”表示僅對 root 使用者或所有者可寫,“?”表示遇到線路故障。 |
who -a
w
命令格式:
$ w [選項]
選項 | 含義 |
---|---|
-h | 不顯示輸出資訊的標題 |
-l | 用長格式輸出 |
-s | 用短格式輸出,不顯示登陸時間,JCPU 和 PCPU 時間 |
-V | 顯示版本資訊 |
上圖是直接執行 w
命令之後輸出的結果,第一行顯示了當前的系統時間、系統從啟動至今已執行的時間、登陸到系統中的使用者數和系統平均負載。第二行是使用者資訊的各列標題,從第三行開始每行代表一個使用者。
第二行輸出的各標題含義如下:
標題 | 含義 |
---|---|
USER | 登入到系統的使用者 |
TTY | 登入終端 |
FROM | 表示使用者從哪裡登陸進來 |
LOGIN@ | 使用者登陸的日期和時間。 |
IDLE | 表示某個程式上次從終端開始執行到現在所持續的時間 |
JCPU | 和該終端連線的所有程序佔用的 CPU 運算時間。這個時間裡並不包括過去的後臺作業時間,但是包括當前正在執行的後臺作業所佔用的時間 |
PCPU | 當前程序所佔用的 CPU 運算時間 |
WHAT | 當前使用者正在執行的程序名稱和選項,換句話說,就是表示使用者當前執行的是什麼命令 |
檢視過去登陸的使用者資訊:last
、lastlog
last
和 lastlog
命令都可以檢視過去登入的使用者資訊,它們的區別是last 命令可以檢視當前和過去登陸系統使用者的相關資訊;lastlog 命令可以檢視到每個系統使用者最近一次登陸系統的時間。
last
命令格式如下:
$ last [選項]
選項 | 含義 |
---|---|
-a | 把從何處登陸系統的主機名或 IP 地址顯示在最後一行 |
-R | 不顯示登陸系統的主機名或 IP 地址 |
-x | 顯示系統關機、重新開機以及執行等級的改變等資訊 |
-n | 顯示列數 設定列出資訊的顯示列數 |
-d | 將顯示的 IP 地址轉換成主機名稱 |
其實在執行 last
命令時,它是去讀取 /var/log/wtmp
日誌檔案,該檔案是一個二進位制檔案,不能直接用 vi
編輯,只能通過 last 命令呼叫來輸出。
lastlog
命令,檢視登陸過當前系統使用者的最近一次登陸時間
lastlog
命令格式如下:
$ lastlog [選項]
lastlog
命令是去讀取 /var/log/lastlog
日誌檔案的,這個檔案同樣是二進位制檔案,不能直接用 vi 編輯,需要使用 lastlog 命令呼叫。