Linux通常被廣泛應用於伺服器作業系統領域,絕大多數Linux伺服器作業系統預設不提供圖形化使用者介面。伺服器管理員需通過命令列介面與Linux伺服器進行互動。本文將為您介紹Linux系統中的常用命令。
管理進程
ps
命令介紹
ps命令是Process Status的縮寫,用來查看當前系統中正在啟動並執行進程資訊快照。
常用參數說明
參數 | 含義 |
-A | 顯示所有程式。 |
-a | 顯示現行終端機下的所有程式。 |
-e | 此選項的效果和指定“A”選項相同。 |
-f | 顯示UID、PPIP、C與STIME欄位。 |
-u | 以使用者為主的格式來顯示程式狀態。 |
-U | 列出屬於該使用者的程式的狀態,也可以使用使用者名稱來指定。 |
-x | 顯示所有程式,不以終端機來區分。 |
更多參數說明,可運行man ps進行查看。
使用樣本
查看所有進程資訊。
ps -ef通過程式名稱關鍵字尋找程式進程資訊(指定-e、-f參數)。
ps -ef | grep <key_word>請將上述命令中的
<key_word>替換為您指定的關鍵字。通過程式名稱關鍵字尋找程式進程資訊(指定-a、-u、-x參數)。
ps -aux | grep <key_word>請將上述命令中的
<key_word>替換為您指定的關鍵字。查看進程樹資訊。
ps -ejH查看包含線程資料的進程資訊。
ps -eLf使用自訂欄位格式展示線程資訊。
ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm查看指定PID的指標的資訊,樣本中PID為1,指標資訊為comm=。
ps -q 1 -o comm=
top
命令介紹
top命令為Linux系統運行中的進程提供了動態即時視圖,可以顯示系統的概覽資訊及Linux核心當前管理的進程列表。
常用參數說明
參數選項 | 說明 |
-d | 指定top命令重新整理頻率。 |
-p | 指定PID以監控指定進程的狀態。 |
-s | 在安全模式下運行top命令,此模式下將去除互動模式帶來的潛在危險。 |
-i | 使top不顯示任何閑置或者僵死進程。 |
-c | 顯示完整命令而不是只顯示命令名稱。 |
資源監控欄位說明
下圖展示了部分監控欄位及其數值,具體數值會因採樣周期的不同而有所變化。該圖僅供參考,具體資料應以您的實際資料為準。

主要參數說明如下
使用樣本
按指定採集頻率查看系統指標
運行如下命令,按指定採集頻率展示系統指標。樣本中指定採集頻率為3 秒一次。
top 3說明執行top命令,預設會以5s的採集頻率展示系統指標。
定製top命令指標展示介面
預設情況下top命令展示的指標如系統摘要資訊及進程指標監控欄位說明所示。如需修改展示的指標介面,您可以在top互動式命令介面下按
f鍵,以便篩選您需要的指標視圖。
在視圖欄位管理介面,相關操作,請參見下表。
按鍵
說明
↑,↓
進列欄位選擇。
→
選擇整列,之後可以使用上下鍵移動整列的顯示位置。
空格
選擇隱藏還是顯示該欄位,帶*的為顯示。
s
將當前游標所在列設定為排序列。
q
退出視圖欄位管理介面。
使用top命令的互動模式
運行top命令後,系統將進入互動模式。在該模式下,使用者可以通過按鍵與命令進行互動。有關互動模式所支援的命令,請參見下表。
按鍵
說明
1
展示每個邏輯CPU的指標狀況。
u
按u鍵之後,輸入Linux系統使用者名稱,可以查看該使用者相關的進程。
E
切換記憶體指標的計量單位,在Kib、MiB、GiB、TiB、PiB、EiB之間切換。
x
顯示排序列。
y
顯示運行中的進程。
?
顯示協助資訊。
通過PID號找到對應的進程名及所在目錄
執行
top命令動態顯示進程資訊。 以aliyun-service程式為例,查看到PID為1325 。
執行以下命令查看對應程式的目錄。
cd /proc/1352 ls -ail
通過PID結束對應進程
執行top命令,進入互動模式後,按
k鍵,輸入要結束進程的PID之後按Enter鍵以結束對應進程。
kill
命令介紹
kill命令用於在Linux中手動結束進程。
常用參數說明
參數 | 說明 |
-l | 列出可用的訊號的名稱。 |
-L | 在表格中列出訊號名稱。 |
使用樣本
殺死所有可以殺死的進程。
sudo kill -9 -1顯示訊號編號 11 所代表的訊號名稱。
sudo kill -l 11在表格中列出所有可用的訊號。
sudo kill -L結束指定PID的進程。
sudo kill -9 <PID>請將上述命令中的
<PID>替換為您指定的進程PID。
killall
命令介紹
killall命令用於在Linux中通過進程名稱結束進程。
常用參數說明
參數 | 說明 |
-g | 殺死屬於該進程組的進程。 |
-i | 互動模式,殺死進程前會徵求確認資訊。 |
-v | 報告訊號是否成功發送。 |
使用樣本
殺死top進程。
sudo killall top查看系統資訊
在使用Linux執行個體過程中,可以使用uname命令查詢系統資訊。
uname
命令介紹
uname命令用於輸出系統資訊。
常用參數說明
選項 | 說明 |
-a | 輸出全部資訊。 |
-s | 輸出核心名稱。 |
-n | 輸出網路節點主機名稱。 |
-r | 輸出核心發行版本。 |
-v | 輸出核心版本資訊。 |
-m | 輸出機器硬體名稱。 |
-P | 輸出處理器類型。 |
-i | 輸出硬體平台資訊。 |
-o | 輸出作業系統資訊。 |
使用樣本
查看全部系統資訊。
uname -a執行
uname -m或arch命令查看CPU架構,不同架構回顯資訊如下:ARM架構顯示:

x86架構顯示:

dmidecode
dmidecode 命令主要用於從Linux系統 BIOS(基本輸出入系統 (BIOS))中提取和顯示與硬體相關的資訊。它讀取 DMI(桌面管理介面)表,提供關於電腦硬體設定的詳細資料,包括但不限於:
系統資訊:包括製造商、產品名稱、版本、序號、系統型號等。
處理器資訊:包括處理器的型號、速度、核心數等資訊。
記憶體資訊:包括記憶體插槽的數量、容量、類型、速度等資訊。
主板資訊:包括主板的製造商、版本、序號等。
BIOS 資訊:包括 BIOS 的版本、發布日期等。
電源資訊:電源相關的規格和型號。
裝置資訊:包括各種硬體組件的資訊,如網路介面卡等。
輸出系統的完整 DMI 資訊。
sudo dmidecode如果只想查看特定的DMI資訊,可以使用
-t參數,例如僅輸出與記憶體相關的資訊:sudo dmidecode -t memory
查看物理CPU和記憶體資訊
總核心數 = 物理CPU個數 × 每顆物理CPU的核心數
總邏輯CPU數 = 物理CPU個數 × 每顆物理CPU的核心數 × 超執行緒數
通過如下命令,可以查看物理CPU和記憶體相關資訊。
查看物理CPU個數。
cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l查看每個物理CPU中core的個數,即CPU核心數。
cat /proc/cpuinfo| grep "cpu cores"| uniq查看邏輯CPU的個數。
cat /proc/cpuinfo| grep "processor"| wc -l查看CPU型號。
cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c查看記憶體資訊。
cat /proc/meminfo
查看CPU詳細資料
執行lscpu命令查看CPU詳細資料,不同架構回顯資訊如下:
ARM架構顯示:

x86架構顯示:

查看OS資訊
執行cat /proc/version命令查看OS資訊及編譯器版本,不同架構回顯資訊如下:
x86架構顯示:

ARM架構顯示:

查看管理磁碟
df
命令介紹
df命令用於報告檔案系統磁碟空間使用方式。
常用參數說明
選項 | 說明 |
-a | 包含偽(pseudo)、重複和無法訪問的檔案系統。 |
-B | 輸出前將塊大小轉換為指定大小。 |
-h | 以 1024 為冪顯示大小(例如,1023M)。 |
-H | 以 1000 為冪輸出大小(例如,1.1G)。 |
-k | 等效於 --block-size=1K。 |
-l | 僅列出本地的檔案系統。 |
-t | 只顯示指定類型的檔案系統資訊。 |
使用樣本
查看磁碟空間使用方式,結果以MB為單位。
df -BM回顯結果樣本如下。
Filesystem 1M-blocks Used Available Use% Mounted on
tmpfs 742M 22M 721M 3% /run
/dev/vda3 39943M 2542M 35556M 7% /
tmpfs 3708M 0M 3708M 0% /dev/shm
tmpfs 5M 0M 5M 0% /run/lock
tmpfs 742M 1M 742M 1% /run/user/0lsblk
命令介紹
lsblk命令用於列出塊裝置資訊。
常用參數說明
參數 | 說明 |
-a | 列出所有裝置,包含空裝置及記憶體盤裝置。 |
-b | SIZE列使用bytes作為輸出。 |
-f | 輸出資訊中包含檔案系統。 |
使用樣本
查看塊裝置資訊,包含檔案系統資訊。
lsblk -f回顯結果樣本如下。
NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINTS vda |-vda1 |-vda2 vfat FAT32 6175-F96E `-vda3 ext4 1.0 df02e0a1-d28d-41b1-99c2-58f2b684cc79 34.7G 6% /擷取磁碟序號SN。
不同Linux發行版擷取方法可能存在差異,以下方法適用於Alibaba Cloud Linux 3/CentOS 7/Ubuntu18。參考以下步驟進行操作。
查看系統掛載的Block Storage裝置。
lsblk使用以下命令擷取存塊儲裝置的磁碟序號SN,此處以vda裝置為例。
udevadm info --query=all --name=/dev/vda | grep ID_SERIAL
blkid
命令介紹
blkid命令用於查看塊裝置屬性資訊。
使用樣本
查看塊裝置屬性資訊
blkid /dev/vda回顯結果樣本如下。
/dev/vda: PTUUID="bdee1c7f-46fc-4838-9a74-9exxxxxxxxaf" PTTYPE="gpt"fdisk
命令介紹
fdisk命令是Linux分區表操作工具。
常用參數說明
參數 | 說明 |
-l | 列出指定裝置的分區表資訊。 |
-u | 以扇區數而不是以柱面數的形式顯示分區表中各分區的資訊。 |
使用樣本
查看裝置分區情況。
sudo fdisk -lu回顯結果樣本如下。
Disk /dev/vda: 40 GiB, 42949672960 bytes, 83886080 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: BDEE1C7F-46FC-4838-9A74-9E57F8FD63AF
Device Start End Sectors Size Type
/dev/vda1 2048 4095 2048 1M BIOS boot
/dev/vda2 4096 413695 409600 200M EFI System
/dev/vda3 413696 83886046 83472351 39.8G Linux filesystemmount
命令介紹
mount命令用於掛載一個檔案系統。
常用參數說明
參數 | 說明 |
-a | 掛載所有在 |
-L | 以給定的標籤掛載分區。 |
-r | 以唯讀模式掛載檔案系統。 |
-w | 以讀寫入模式掛載檔案系統。 |
-U | 以指定的 |
使用樣本
掛載fstab中配置的所有檔案系統。
sudo mount -a以讀寫入模式掛載指定檔案系統。
sudo mount -w /dev/vdb1 /mnt
umount
命令介紹
umount命令用於卸載一個檔案系統。
常用參數說明
參數 | 說明 |
-r | 如果卸載失敗,嘗試以唯讀方式重新掛載。 |
-a | 卸載所有在 |
-t | 只卸載指定類型的檔案系統。如果要一次指定多個檔案系統, 可以用逗號分隔。 |
-f | 強制卸載。 |
使用樣本
強制卸載指定分區。
sudo umount -f /dev/vdb1管理服務
systemctl
命令介紹
systemctl命令用於服務管理。
常用參數說明
參數 | 說明 |
-a | 表示列出所有已載入的單元或者屬性。 |
常用單元命令
命令 | 說明 |
start | 啟動指定的已載入單元。 |
stop | 停止指定的已載入單元。 |
restart | 重新啟動指定的已載入單元。 |
reload | 要求指定的單元重新載入它們的配置。 |
status | 顯示指定單元的運行時狀態資訊。常見的服務運行狀態如下所示。
|
常用單元檔案命令
命令 | 說明 |
enable | 啟用指定的單元或單元執行個體。 |
disable | 停用指定的單元或單元執行個體。 |
使用樣本
重新啟動
nginx服務。sudo systemctl restart nginx查看
nginx服務狀態。sudo systemctl status nginx設定
nginx服務開機啟動。sudo systemctl enable nginx查看開機啟動的服務列表。
sudo systemctl list-unit-files --type=service --state=enabled
管理資源佔用
lsof
命令介紹
lsof命令用於列出開啟的檔案。
如果您使用的Linux發行版沒有預裝lsof工具,您可以使用對應的軟體包管理工具進行安裝。
Alibaba Cloud Linux、CentOS、RHEL:
sudo yum install lsof。Ubuntu、Debian:
sudo apt install lsof。
常用參數說明
參數 | 說明 |
-p | 輸出指定進程開啟的檔案。 |
-l | 輸出中使用ID代替使用者名稱。 |
-u | 輸出指定使用者開啟的檔案。 |
-c | 輸出 |
-d | 輸出包含指定描述符的項。 |
-i | 輸出符合指定條件的項。選擇性參數如下:
|
回顯資訊說明
運行lsof命令後的回顯資訊樣本如下:

相關參數說明如下。
參數 | 說明 |
COMMAND | 命令名稱。 |
PID | 進程ID。 |
TID | 線程ID,如果為空白代表列出的是進程。 |
TASKCMD | 任務名稱,通常與 COMMAND 相同。 |
USER | 使用者ID號或登入名稱。 |
FD | 檔案描述符。 |
TYPE | 與檔案關聯的節點類型。 |
DEVICE | 裝置號。 |
SIZE/OFF | 檔案大小/位移量,以位元組為單位。 |
NODE | 檔案結點。 |
NAME | 檔案掛載點和檔案所在的系統。 |
使用樣本
列出指定進程開啟的檔案
sudo lsof -p 1請將上述命令中的
1進程PID替換為您指定的進程PID。查看指定使用者相關進程開啟的檔案
sudo lsof -u <user-name>請將上述命令中的
<user-name>替換為您指定的Linux系統使用者名稱。查看開啟指定檔案的相關進程資訊
sudo lsof <file-name>請將上述命令中的
<file-name>替換為您指定的檔案名稱。輸出 TYPE 為 IPv4 的所有項
sudo lsof -i 4
netstat
命令介紹
netstat命令用於顯示TCP、UDP的連接埠和進程等相關情況。
常用參數說明
參數 | 說明 |
-t | 僅顯示TCP相關選項。 |
-u | 僅顯示UDP相關選項。 |
-i | 顯示網卡列表。 |
-n | 拒絕顯示別名,能顯示數位全部轉化為數字。 |
-l | 僅列出在Listen(監聽)的服務狀態。 |
-p | 顯示建立相關連結的程式名。 |
-s | 顯示網路統計資訊。 |
使用樣本
查看8000連接埠的佔用情況。
netstat -tunlp | grep 8000請將上述命令中的
8000連接埠替換為您指定的進程PID。查看所有TCP連接埠使用方式。
netstat -ntlp
vmstat
命令介紹
vmstat(Virtual Memory Statistics)是用於報告虛擬記憶體統計資訊的命令,可以使用該命令,從系統維度查看作業系統的虛擬記憶體、進程、CPU等指標資訊。
常用參數說明
vmstat命令的使用格式如下。
vmstat [-n] [delay [count]] 參數選項 | 說明 |
-n | 只在開始時顯示一次各欄位名稱。 |
[delay] | 重新整理時間間隔。如果不指定,只顯示一條結果。 |
[count] | 重新整理次數。如果不指定重新整理次數,但指定了重新整理時間間隔,重新整理操作不會自動停止,您需要按 |
使用樣本
執行如下命令,使用vmstat每1秒統計一次各進程的CPU使用方式,連續統計4次。
vmstat -n 1 4返回樣本類似如下。
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 2684984 310452 2364304 0 0 5 17 19 35 4 2 94 0 0
0 0 0 2687504 310452 2362268 0 0 0 252 1942 4326 5 2 93 0 0
0 0 0 2687356 310460 2362252 0 0 0 68 1891 4449 3 2 95 0 0
0 0 0 2687252 310460 2362256 0 0 0 0 1906 4616 4 1 95 0 0回顯結果主要欄位說明如下。
r:表示系統中CPU等待處理的線程。一個CPU每次只能處理一個線程,所以該數值越大,通常表示系統運行越慢。
us:使用者模式消耗的CPU時間百分比。該值較高時,說明使用者進程消耗的CPU時間比較多。如果該值長期超過50%,則需要對程式演算法或代碼等進行最佳化。
sy:核心模式消耗的CPU時間百分比。
wa:I/O等待消耗的CPU時間百分比。該值較高時,說明IO等待比較嚴重,這可能是磁碟大量作隨機訪問造成的,也可能是磁碟效能出現了瓶頸。
id:處於空閑狀態的CPU時間百分比。如果該值持續為0,同時sy是us的兩倍,則通常說明系統面臨CPU資源短缺。
擷取使用者登入資訊
Linux系統中使用者登入記錄相關檔案說明如下。
使用者登入資訊通常記錄在
/var/run/utmp、/var/log/wtmp、/var/log/btmp、/var/log/lastlog等檔案中。who、w和users等命令通過/var/run/utmp檔案查詢當前登入使用者的資訊。last命令通過/var/log/wtmp檔案查詢當前與過去登入系統的使用者的資訊。lastb命令通過/var/log/btmp檔案查詢所有登入系統失敗的使用者的資訊。lastlog命令通過/var/log/lastlog檔案查詢使用者最後一次登入的資訊。
who
who命令用於查看當前登入系統的使用者資訊,返回結果類似如下。

w
w命令顯示當前登入的使用者名稱並顯示該使用者當前執行的任務,返回結果類似如下。

users
users命令用於顯示當前登入的使用者名稱,返回結果類似如下。

last
last命令用於查看截止當前登入過系統的所有使用者資訊,返回結果類似如下。

lastb
lastb命令顯示所有登入系統失敗的使用者的資訊,返回結果類似如下。

lastlog
lastlog命令用於查看使用者最後一次登入系統的資訊,返回結果類似如下。

cat /var/log/secure
cat /var/log/secure命令用於查詢所有使用者登入系統的記錄,返回結果類似如下。

系統管理使用者
在Linux系統中,您可以通過useradd、wheel、passwd和userdel等命令有效地管理系統使用者及其許可權。
useradd
命令介紹
useradd 命令主要用於添加新使用者。該命令和adduser功能基本相同。建立完成後,您可以通過cat /etc/passwd | grep username查看使用者資訊。
在建立使用者時,需要root許可權或相應的sudo許可權。
使用
useradd建立使用者後,建議立即設定使用者密碼。確保在建立使用者時,主組和附加組是存在的,否則會導致添加使用者失敗。
常用參數說明
參數 | 說明 |
-d | 指定使用者的主目錄。如果不指定,系統會使用預設的 |
-m | 建立使用者的主目錄。如果指定了 |
-s | 指定使用者的登入 Shell,預設是 |
-g | 指定使用者的主組。如果組不存在,則需要先建立。 |
-G | 指定使用者加入的附加組。多個附加組直接用英文逗號隔開。 |
-p | 為使用者佈建密碼。注意,該密碼需要經過加密,不應直接在命令列中使用純文字密碼。樣本如下: |
-u | 指定使用者的使用者ID。 |
-e | 設定賬戶的有效期間,格式為 YYYY-MM-DD。 |
使用樣本
建立一個新使用者
jack,並為其指定主目錄和登入 Shell目錄:useradd -m -d /home/jack -s /bin/bash jack建立完成後,您可以通過
cat /etc/passwd | grep jack查看到如下資訊:jack:x:1000:1000::/home/jack:/bin/bash使用者建立後,可以使用
passwd命令為使用者佈建密碼:passwd jack建立一個新使用者
alice,並將其添加到developers組:useradd -m -G developers alice建立一個新使用者
bob,並設定使用者ID為 1001:useradd -m -u 1001 bob添加擁有root許可權的使用者。步驟如下:
重要建議遵循安全最佳實務,僅在必要的情況下授予使用者root許可權。
使用
useradd命令建立一個新使用者john。useradd john為新建立的使用者佈建密碼。
passwd john為了讓新使用者擁有 root 許可權,可以將使用者添加到
wheel組中。wheel組通常用於授予使用者 sudo 許可權。執行grep '^wheel:' /etc/group查詢wheel群組成員。sudo usermod -aG wheel john測試新使用者的sudo許可權。切換到新使用者,並嘗試使用
sudo命令:su - john sudo ls /root如果一切正常,會被要求輸入密碼,輸入正確的密碼後,系統將列出
/root目錄的內容,表明新使用者擁有 sudo 許可權,也可以使用john進行遠程登入。(可選)修改sudoers檔案。在檔案中,為使用者添加特定的許可權。
sudo visudo
userdel
命令介紹
userdel 命令主要用於刪除使用者賬戶。
常用參數說明
參數 | 說明 |
-r | 同時刪除使用者的主目錄和該目錄下的檔案。 |
-f | 強制移除使用者,即使使用者當前正在登入。 |
使用樣本
刪除使用者
john:切換到root使用者,執行
cat /etc/passwd | grep john查看使用者目錄,返回如下資訊,john:x:1001:1001::/home/john:/bin/bash刪除名為
john的使用者,但其使用者目錄和檔案仍然會保留。userdel john刪除使用者
john及其使用者目錄和所有與該使用者相關的檔案,userdel -r username強制移除使用者,即使該使用者當前正在使用系統。
userdel -f username
wheel
命令介紹
wheel 是一個使用者組,主要功能是控制誰可以使用 su 命令切換到超級使用者賬戶(通常是root使用者)。
wheel組預設已經存在。如果不存在,可以使用sudo groupadd wheel命令建立。預設的情況下,普通使用者通過su命令且輸入了正確的root密碼,就可以切換到root使用者,對系統進行管理和配置。
為了加強系統的完全性,可以使用Linux特殊的wheel使用者組來限制普通使用者切換到root管理使用者,只有加入到wheel組,才可以使用su切換到root管理使用者。
使用樣本
檢查使用者是否在 wheel 組中。
groups username將使用者添加到 wheel 組中。
sudo usermod -aG wheel username使用
visudo命令安全編輯/etc/sudoers檔案,%wheel ALL=(ALL) ALL表示wheel組的成員可以使用sudo執行所有命令。如果想要允許
wheel組的使用者無密碼使用sudo,可以修改為:%wheel ALL=(ALL) NOPASSWD: ALL