全部產品
Search
文件中心

Cloud Shell:Linux系統常用命令

更新時間:Sep 11, 2026

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

顯示完整命令而不是只顯示命令名稱。

資源監控欄位說明

以下展示了部分監控欄位及其數值,具體數值會因採樣周期的不同而有所變化。該樣本僅供參考,具體資料應以您的實際資料為準。

top - 15:30:29 up  2:11,  1 user,  load average: 0.00, 0.00, 0.00
Tasks:  99 total,   1 running,  98 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.3 us,  0.2 sy,  0.0 ni, 99.2 id,  0.0 wa,  0.3 hi,  0.0 si,  0.0 st
MiB Mem :   7607.4 total,   6642.1 free,    409.4 used,    801.4 buff/cache
MiB Swap:      0.0 total,      0.0 free,      0.0 used.   7198.0 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
  633 root      20   0  474964  29076  13644 S   0.3   0.4   0:09.58 tuned
 1716 root      20   0  131676  23172  16576 S   0.3   0.3   0:28.48 AliYunDunMonito
 1938 root      20   0 1460104  29564  22520 S   0.3   0.4   0:27.93 argusagent
 5525 root      20   0       0      0      0 I   0.3   0.0   0:00.01 kworker/u4:1-events_unbound
    1 root      20   0  103344  11320   8656 S   0.0   0.1   0:01.31 systemd
    2 root      20   0       0      0      0 S   0.0   0.0   0:00.00 kthreadd
    3 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 rcu_gp
    4 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 rcu_par_gp
    5 root      20   0       0      0      0 I   0.0   0.0   0:00.01 kworker/0:0-events
    6 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker/0:0H-events_highpri
    8 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 mm_percpu_wq
   10 root      20   0       0      0      0 S   0.0   0.0   0:00.00 rcu_tasks_rude_
   11 root      20   0       0      0      0 S   0.0   0.0   0:00.00 rcu_tasks_trace
   12 root      20   0       0      0      0 S   0.0   0.0   0:00.00 ksoftirqd/0
   13 root      20   0       0      0      0 I   0.0   0.0   0:00.47 rcu_sched
   14 root      rt   0       0      0      0 S   0.0   0.0   0:00.00 migration/0
   15 root      20   0       0      0      0 S   0.0   0.0   0:00.00 cpuhp/0
   16 root      20   0       0      0      0 S   0.0   0.0   0:00.00 cpuhp/1
   17 root      rt   0       0      0      0 S   0.0   0.0   0:00.07 migration/1
   18 root      20   0       0      0      0 S   0.0   0.0   0:00.01 ksoftirqd/1
   19 root      20   0       0      0      0 I   0.0   0.0   0:00.43 kworker/1:0-events
   20 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker/1:0H-events_highpri
   22 root      20   0       0      0      0 S   0.0   0.0   0:00.00 kdevtmpfs
   23 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 netns
   24 root      20   0       0      0      0 S   0.0   0.0   0:00.00 kauditd
   27 root      20   0       0      0      0 S   0.0   0.0   0:00.00 khungtaskd
   28 root      20   0       0      0      0 S   0.0   0.0   0:00.00 oom_reaper
   29 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 writeback
   30 root      20   0       0      0      0 S   0.0   0.0   0:00.03 kcompactd0
   31 root      25   5       0      0      0 S   0.0   0.0   0:00.00 ksmd
   32 root      39  19       0      0      0 S   0.0   0.0   0:00.06 khugepaged
   33 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 memcg_wmark
   34 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 memcg_pgcache_l
   48 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 cryptd
   83 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kintegrityd
   84 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kblockd
   85 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 blkcg_punt_bio
   86 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 tpm_dev_wq
   87 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 md
   88 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 edac-poller
   89 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 devfreq_wq

主要參數說明如下

系統摘要資訊及進程指標監控欄位說明

系統摘要資訊欄位說明

參數(行)

說明

top

主機名稱、資訊採樣日期和時間點。

  • 目前時間

  • up:系統啟動時間

  • user:當前登入使用者數

  • load average:系統負載,即任務隊列的平均長度。三個數值分別為 1分鐘、5分鐘、15分鐘前到現在的平均值。

Tasks

各種狀態的進程的統計資訊。

  • total:所有任務個數。

  • running:運行中進程個數。

  • sleeping:休眠中進程個數。

  • stopped:停止進程個數。

  • zombie:殭屍進程個數。

%Cpu(s)

cpu使用率情況。

  • us:使用者空間占CPU的百分比

  • sy:核心空間占CPU的百分比

  • ni:使用者進程空間改變過優先順序

  • id:空閑CPU佔用率

  • wa:等待輸入輸出的CPU時間百分比

  • hi:硬中斷佔用百分比

  • si:非強制中斷佔用百分比

  • st:steal time

MiB Mem

記憶體使用量量統計。

  • total:實體記憶體總量。

  • free:空閑記憶體量

  • used:使用的記憶體量

  • buff/cache:用作核心緩衝的記憶體量。

MiB Swap

交換分區使用量統計。

  • total:交換區記憶體總量。

  • free:空閑交換區總量。

  • used:使用的交換區總量。

  • avail Mem:緩衝的交換區總量。

進程列表指標資訊欄位說明

參數(列)

說明

PID

進程的ID

USER

進程所屬使用者

PR

進程的優先順序別,越小越優先被執行

NI

進程優先值

VIRT

進程佔用的虛擬記憶體

RES

進程佔用的實體記憶體

SHR

進程使用的共用記憶體

S

進程的狀態。

  • R:運行狀態。

  • S:休眠狀態。

  • Z:僵死狀態。

  • D:不可中斷的睡眠狀態

  • T:跟蹤/停止狀態

%CPU

進程佔用CPU的使用率

%MEM

進程使用的實體記憶體和總記憶體的百分比

TIME+

該進程啟動後佔用的總的CPU時間,即佔用CPU使用時間的累加值。

COMMAND

進程啟動命令名稱

使用樣本

  • 按指定採集頻率查看系統指標

    運行如下命令,按指定採集頻率展示系統指標。樣本中指定採集頻率為3 秒一次。

    top -d 3
    說明

    執行top命令,預設會以5s的採集頻率展示系統指標。

  • 定製top命令指標展示介面

    預設情況下top命令展示的指標如系統摘要資訊及進程指標監控欄位說明所示。如需修改展示的指標介面,您可以在top互動式命令介面下按f鍵,以便篩選您需要的指標視圖。

    Fields Management for window 1:Def, whose current sort field is %CPU
       Navigate with Up/Dn, Right selects for move then <Enter> or Left commits,
       'd' or <Space> toggles display, 's' sets sort.  Use 'q' or <Esc> to end!
    
    * PID     = Process Id             USED    = Res+Swap Size (KiB)
    * USER    = Effective User Name    nsIPC   = IPC namespace Inode
    * PR      = Priority               nsMNT   = MNT namespace Inode
    * NI      = Nice Value             nsNET   = NET namespace Inode
    * VIRT    = Virtual Image (KiB)    nsPID   = PID namespace Inode
    * RES     = Resident Size (KiB)    nsUSER  = USER namespace Inode
    * SHR     = Shared Memory (KiB)    nsUTS   = UTS namespace Inode
    * S       = Process Status         LXC     = LXC container name
    * %CPU    = CPU Usage              RSan    = RES Anonymous (KiB)
    * %MEM    = Memory Usage (RES)     RSfd    = RES File-based (KiB)
    * TIME+   = CPU Time, hundredths   RSlk    = RES Locked (KiB)
    * COMMAND = Command Name/Line      RSsh    = RES Shared (KiB)
      PPID    = Parent Process pid     CGNAME  = Control Group name
      UID     = Effective User Id      NU      = Last Used NUMA node
      RUID    = Real User Id
      RUSER   = Real User Name
      SUID    = Saved User Id
      SUSER   = Saved User Name
      GID     = Group Id
      GROUP   = Group Name
      PGRP    = Process Group Id
      TTY     = Controlling Tty
      TPGID   = Tty Process Grp Id
      SID     = Session Id
      nTH     = Number of Threads
      P       = Last Used Cpu (SMP)
      TIME    = CPU Time
      SWAP    = Swapped Size (KiB)
      CODE    = Code Size (KiB)
      DATA    = Data+Stack (KiB)
      nMaj    = Major Page Faults
      nMin    = Minor Page Faults
      nDRT    = Dirty Pages Count
      WCHAN   = Sleeping in Function
      Flags   = Task Flags <sched.h>
      CGROUPS = Control Groups
      SUPGIDS = Supp Groups IDs
      SUPGRPS = Supp Groups Names
      TGID    = Thread Group Id
      OOMa    = OOMEM Adjustment
      OOMs    = OOMEM Score current
      ENVIRON = Environment vars
      vMj     = Major Faults delta
      vMn     = Minor Faults delta

    在視圖欄位管理介面,相關操作,請參見下表。

    按鍵

    說明

    ↑,↓

    進列欄位選擇。

    →

    選擇整列,之後可以使用上下鍵移動整列的顯示位置。

    空格

    選擇隱藏還是顯示該欄位,帶*的為顯示。

    s

    將當前游標所在列設定為排序列。

    q

    退出視圖欄位管理介面。

  • 使用top命令的互動模式

    運行top命令後,系統將進入互動模式。在該模式下,使用者可以通過按鍵與命令進行互動。有關互動模式所支援的命令,請參見下表。

    按鍵

    說明

    1

    展示每個邏輯CPU的指標狀況。

    u

    按u鍵之後,輸入Linux系統使用者名稱,可以查看該使用者相關的進程。

    E

    切換記憶體指標的計量單位,在Kib、MiB、GiB、TiB、PiB、EiB之間切換。

    x

    顯示排序列。

    y

    顯示運行中的進程。

    ?

    顯示協助資訊。

  • 通過PID號找到對應的進程名及所在目錄

    執行top命令動態顯示進程資訊。 以 aliyun-service 程式為例,可以看到 PID 1325 對應的進程為 aliyun-service。

    Tasks: 188 total,   1 running, 186 sleeping,   0 stopped,   1 zombie
    %Cpu(s):  0.2 us,  0.1 sy,  0.0 ni, 99.6 id,  0.0 wa,  0.1 hi,  0.1 si,  0.0 st
    MiB Mem : 15468.8 total,  12290.5 free,   1710.8 used,   1783.7 buff/cache
    MiB Swap:    0.0 total,      0.0 free,      0.0 used.  13758.1 avail Mem
    
      PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM   TIME+ COMMAND
    15831 root      20   0 1401860  42152  20472 S   0.5   0.3   2:59.24 taihao_exporter
    17830 root      20   0 1153952 127996  65356 S   0.5   0.8   2:57.27 ilogtail
      971 root      20   0 2312484  29944  22544 S   0.3   0.2   3:28.78 argusagent
     1325 root      20   0  686276  18700  13028 S   0.3   0.1   0:40.97 aliyun-service
    392452 root      20   0       0      0      0 I   0.3   0.0   0:00.36 kworker/u8:3-events_unbound
        1 root      20   0  169452  11824   8644 S   0.0   0.1   0:48.72 systemd

    執行以下命令查看對應程式的目錄。

    cd /proc/1352
    ls -ail

    命令輸出中,exe 符號連結指向 /usr/local/share/aliyun-assist/2.2.3.857/aliyun-service,即進程 1325 對應的可執行檔路徑。

    [root         1325]# ls -ail
    total 0
     24390 dr-xr-xr-x   9 root root 0 Jan 22 13:17 .
         1 dr-xr-xr-x 253 root root 0 Jan 22 13:17 ..
    3003054 -r--r--r--   1 root root 0 Jan 23 17:01 arch_status
     28694 dr-xr-xr-x   2 root root 0 Jan 22 13:17 attr
    3003026 -rw-r--r--   1 root root 0 Jan 23 17:01 autogroup
    3003022 -r--------   1 root root 0 Jan 23 17:01 auxv
     28698 -r--r--r--   1 root root 0 Jan 22 13:17 cgroup
    3003034 --w-------   1 root root 0 Jan 23 17:01 clear_refs
     26278 -r--r--r--   1 root root 0 Jan 22 13:17 cmdline
     28693 -rw-r--r--   1 root root 0 Jan 22 13:17 comm
    3003046 -rw-r--r--   1 root root 0 Jan 23 17:01 coredump_filter
    3003042 -r--r--r--   1 root root 0 Jan 23 17:01 cpu_resctrl_groups
    3003041 -r--r--r--   1 root root 0 Jan 23 17:01 cpuset
     52865 lrwxrwxrwx   1 root root 0 Jan 22 13:18 cwd -> /
    3003021 -r--------   1 root root 0 Jan 23 17:01 environ
     27984 lrwxrwxrwx   1 root root 0 Jan 22 13:17 exe -> /usr/local/share/aliyun-assist/2.2.3.857/aliyun-service
     22392 dr-x------   2 root root 0 Jan 22 13:17 fd
    3003019 dr-x------   1 root root 0 Jan 23 17:01 fdinfo
    3003048 -rw-r--r--   1 root root 0 Jan 23 17:01 gid_map
     79376                1 root root 0 Jan 22 13:21 io
    3003024 -r--r--r--   1 root root 0 Jan 23 17:01 limits
     28697 -rw-r--r--   1 root root 0 Jan 22 13:17 loginuid
  • 通過PID結束對應進程

    執行top命令,進入互動模式後,按k鍵,輸入要結束進程的PID之後按Enter鍵以結束對應進程。

    top - 17:19:44 up  3:50,  0 user,  load average: 0.00, 0.00, 0.00
    Tasks: 117 total,   1 running, 116 sleeping,   0 stopped,   0 zombie
    %Cpu(s):  0.3 us,  0.0 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
    MiB Mem :   7414.8 total,   6142.9 free,    471.8 used,   1059.6 buff/cache
    MiB Swap:      0.0 total,      0.0 free,      0.0 used.   6943.1 avail Mem
    Send pid 4717 signal [15/sigterm]
      PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
     4717 root      20   0  101088  19384  13184 S   0.7   0.3   0:32.65 AliYunDun
     4744 root      20   0  139200  29284  19456 S   0.7   0.4   1:11.93 AliYunDunMonito
     1076 root      20   0  468824  13312  11392 S   0.3   0.2   0:00.19 udisksd
     4574 root      20   0 1244388  25856  23680 S   0.3   0.3   0:38.55 argusagent
        1 root      20   0   22716  13644   9336 S   0.0   0.2   0:03.74 systemd
        2 root      20   0       0      0      0 S   0.0   0.0   0:00.00 kthreadd
        3 root      20   0       0      0      0 I   0.0   0.0   0:00.00 pool_workqueue_release
        4 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker/R-rcu_g
        5 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker/R-rcu_p
        6 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker/R-slub_
        7 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker/R-netns
        9 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker/0:0H-events_highpri
       12 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker/R-mm_pe

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架構顯示:

    [t@iUf682 xxx ~]# uname -m
    aarch64
    [t@iUf682 xxx ~]# arch
    aarch64

    x86架構顯示:

    [root@iZbp144wor*** ~]# uname -m
    x86_64
    [root@iZbp144wor*** ~]# arch
    x86_64

dmidecode

dmidecode 命令主要用於從Linux系統 BIOS(基本輸出入系統 (BIOS))中提取和顯示與硬體相關的資訊。它讀取 DMI(桌面管理介面)表,提供關於電腦硬體設定的詳細資料,包括但不限於:

  1. 系統資訊:包括製造商、產品名稱、版本、序號、系統型號等。

  2. 處理器資訊:包括處理器的型號、速度、核心數等資訊。

  3. 記憶體資訊:包括記憶體插槽的數量、容量、類型、速度等資訊。

  4. 主板資訊:包括主板的製造商、版本、序號等。

  5. BIOS 資訊:包括 BIOS 的版本、發布日期等。

  6. 電源資訊:電源相關的規格和型號。

  7. 裝置資訊:包括各種硬體組件的資訊,如網路介面卡等。

  • 輸出系統的完整 DMI 資訊。

    sudo dmidecode

    預期結構如下:

    # dmidecode 3.5
    Getting SMBIOS data from sysfs.
    SMBIOS 2.8 present.
    9 structures occupying 451 bytes.
    Table at 0x7BBCB000.
    Handle 0x0100, DMI type 1, 27 bytes
    System Information
            Manufacturer: Alibaba Cloud
            Product Name: Alibaba Cloud ECS
            Version: pc-i440fx-2.1
            Serial Number: a430fe54-aef6-4eae-a1ef-63******beb
            UUID: a430fe54-aef6-4eae-a1ef-63******beb
            Wake-up Type: Power Switch
            SKU Number: Not Specified
            Family: Not Specified
    Handle 0x0300, DMI type 3, 21 bytes
    Chassis Information
            Manufacturer: Alibaba Cloud
            Type: Other
            Lock: Not Present
            Version: pc-i440fx-2.1
            Serial Number: Not Specified
            Asset Tag: Not Specified
            Boot-up State: Safe
            Power Supply State: Safe
            Thermal State: Safe
            Security Status: Unknown
            OEM Information: 0x00000000
            Height: Unspecified
            Number Of Power Cords: Unspecified
            Contained Elements: 0
    Handle 0x0400, DMI type 4, 42 bytes
    Processor Information
            Socket Designation: CPU 0
            Type: Central Processor
            Family: Other
            Manufacturer: Alibaba Cloud
            ID: 54 06 05 00 FF FB 8B 1F
            Version: pc-i440fx-2.1
            Voltage: Unknown
            External Clock: Unknown
            Max Speed: Unknown
            Current Speed: Unknown
            Status: Populated, Enabled
            Upgrade: Other
            L1 Cache Handle: Not Provided
            L2 Cache Handle: Not Provided
            L3 Cache Handle: Not Provided
            Serial Number: Not Specified
            Asset Tag: Not Specified
            Part Number: Not Specified
            Core Count: 1
            Core Enabled: 1
            Thread Count: 2
            Characteristics: None
    Handle 0x1000, DMI type 16, 23 bytes
    Physical Memory Array
            Location: Other
            Use: System Memory
            Error Correction Type: Multi-bit ECC
            Maximum Capacity: 2 GB
            Error Information Handle: Not Provided
            Number Of Devices: 1
    Handle 0x1100, DMI type 17, 40 bytes
    Memory Device
            Array Handle: 0x1000
            Error Information Handle: Not Provided
            Total Width: Unknown
            Data Width: Unknown
            Size: 2 GB
            Form Factor: DIMM
            Set: None
            Locator: DIMM 0
            Bank Locator: Not Specified
            Type: RAM
            Type Detail: Other
            Speed: Unknown
            Manufacturer: Alibaba Cloud
            Serial Number: Not Specified
            Asset Tag: Not Specified
            Part Number: Not Specified
            Rank: Unknown
            Configured Memory Speed: Unknown
            Minimum Voltage: Unknown
            Maximum Voltage: Unknown
            Configured Voltage: Unknown
    Handle 0x1300, DMI type 19, 31 bytes
    Memory Array Mapped Address
            Starting Address: 0x00000000000
            Ending Address: 0x0007FFFFFFF
            Range Size: 2 GB
            Physical Array Handle: 0x1000
            Partition Width: 1
    Handle 0x2000, DMI type 32, 11 bytes
    System Boot Information
            Status: No errors detected
    Handle 0x0000, DMI type 0, 26 bytes
    BIOS Information
            Vendor: EFI Development Kit II / OVMF
            Version: 0.0.0
            Release Date: 02/06/2015
            Address: 0xE8000
            Runtime Size: 96 kB
            ROM Size: 64 kB
            Characteristics:
                    BIOS characteristics not supported
                    Targeted content distribution is supported
                    UEFI is supported
                    System is a virtual machine
            BIOS Revision: 0.0
    Handle 0xFEFF, DMI type 127, 4 bytes
    End Of Table
  • 如果只想查看特定的DMI資訊,可以使用 -t 參數,例如僅輸出與記憶體相關的資訊:

    sudo dmidecode -t memory

    預期結果如下:

    # dmidecode 3.5
    Getting SMBIOS data from sysfs.
    SMBIOS 2.8 present.
    Handle 0x1000, DMI type 16, 23 bytes
    Physical Memory Array
            Location: Other
            Use: System Memory
            Error Correction Type: Multi-bit ECC
            Maximum Capacity: 2 GB
            Error Information Handle: Not Provided
            Number Of Devices: 1
    Handle 0x1100, DMI type 17, 40 bytes
    Memory Device
            Array Handle: 0x1000
            Error Information Handle: Not Provided
            Total Width: Unknown
            Data Width: Unknown
            Size: 2 GB
            Form Factor: DIMM
            Set: None
            Locator: DIMM 0
            Bank Locator: Not Specified
            Type: RAM
            Type Detail: Other
            Speed: Unknown
            Manufacturer: Alibaba Cloud
            Serial Number: Not Specified
            Asset Tag: Not Specified
            Part Number: Not Specified
            Rank: Unknown
            Configured Memory Speed: Unknown
            Minimum Voltage: Unknown
            Maximum Voltage: Unknown
            Configured Voltage: Unknown

查看物理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架構顯示:

    [root@iZuf682tl xxx ~]# lscpu
    Architecture:          aarch64
    Byte Order:            Little Endian
    CPU(s):                4
    On-line CPU(s) list:   0-3
    Thread(s) per core:    1
    Core(s) per cluster:   4
    Socket(s):             1
    Cluster(s):            1
    NUMA node(s):          1
    Vendor ID:             ARM
    BIOS Vendor ID:        Alibaba Cloud
    Model:                 1
    Model name:            Neoverse-N1
    BIOS Model name:       virt-rhel7.6.0
    Stepping:              r3p1
    BogoMIPS:              50.00
    NUMA node0 CPU(s):     0-3
    Flags:                 fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm lrcpc dcpop asimddp ssbs
  • x86架構顯示:

    [root@iZbp14xxxxx ~]# lscpu
    Architecture:          x86_64
    CPU op-mode(s):        32-bit, 64-bit
    Byte Order:            Little Endian
    CPU(s):                16
    On-line CPU(s) list:   0-15
    Thread(s) per core:    2
    Core(s) per socket:    8
    Socket(s):             1
    NUMA node(s):          1
    Vendor ID:             GenuineIntel
    CPU family:            6
    Model:                 106
    Model name:            Intel(R) Xeon(R) Platinum 8369B CPU @ 2.90GHz
    Stepping:              6
    CPU MHz:               2899.998
    BogoMIPS:              5799.99
    Hypervisor vendor:     KVM
    Virtualization type:   full
    L1d cache:             48K
    L1i cache:             32K
    L2 cache:              1280K
    L3 cache:              49152K
    NUMA node0 CPU(s):     0-15
    Flags:                 fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc cpuid tsc_known_freq pni pclmulqdq monitor ssse3 fma cx16 pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch cpuid_fault invpcid_single ssbd ibrs ibpb stibp ibrs_enhanced fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid avx512f avx512dq rdseed adx smap avx512ifma clflushopt clwb avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves wbnoinvd arat avx512vbmi avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq rdpid fsrm arch_capabilities

查看OS資訊

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

  • x86架構顯示:

    [xxx@iZbp144wor         ~]# cat /proc/version
    Linux version 4.19.91-26.1.al7.x86_64 (mockbuild@x86-003.build.alibaba.cm10) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)) #1 SMP Tue Jul 26 17:52:28 CST 2022
  • ARM架構顯示:

    [root@iZuf682t          ~]# cat /proc/version
    Linux version 5.10.134-12.al8.aarch64 (mockbuild@r75e11320.cm10.tbsite.net) (gcc (GCC) 10.2.1 20200825 (Alibaba 10.2.1-3 2.32), GNU ld version 2.35-12.2.al8) #1 SMP Tue Sep 6 07:11:41 UTC 2022

查看管理磁碟

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/0

lsblk

命令介紹

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。參考以下步驟進行操作。

    1. 查看系統掛載的Block Storage裝置。

      lsblk
    2. 使用以下命令擷取存塊儲裝置的磁碟序號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 filesystem

mount

命令介紹

mount命令用於掛載一個檔案系統。

常用參數說明

參數

說明

-a

掛載所有在/etc/fstab檔案中描述的檔案系統。

-L

以給定的標籤掛載分區。

-r

以唯讀模式掛載檔案系統。

-w

以讀寫入模式掛載檔案系統。

-U

以指定的uuid掛載分區。

使用樣本

  • 掛載fstab中配置的所有檔案系統。

    sudo mount -a
  • 以讀寫入模式掛載指定檔案系統。

    sudo mount -w /dev/vdb1 /mnt

umount

命令介紹

umount命令用於卸載一個檔案系統。

常用參數說明

參數

說明

-r

如果卸載失敗,嘗試以唯讀方式重新掛載。

-a

卸載所有在/etc/mtab檔案中描述的檔案系統。

-t

只卸載指定類型的檔案系統。如果要一次指定多個檔案系統, 可以用逗號分隔。

-f

強制卸載。

使用樣本

強制卸載指定分區。

sudo umount -f /dev/vdb1

管理服務

systemctl

命令介紹

systemctl命令用於服務管理。

常用參數說明

參數

說明

-a

表示列出所有已載入的單元或者屬性。

常用單元命令

命令

說明

start

啟動指定的已載入單元。

stop

停止指定的已載入單元。

restart

重新啟動指定的已載入單元。

reload

要求指定的單元重新載入它們的配置。

status

顯示指定單元的運行時狀態資訊。常見的服務運行狀態如下所示。

  • active (running):服務正在後台運行。

  • active (exited):服務已經運行過並已退出。

  • active (waiting):該服務正在運行,但正在等待由特定條件或事件觸發。

  • inactive:服務當前未運行。

常用單元檔案命令

命令

說明

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

輸出COMMAND列中包含指定關鍵字的項。

-d

輸出包含指定描述符的項。

-i

輸出符合指定條件的項。選擇性參數如下:

  • 46:分別指 IPv4、IPv6。

  • protocol:可指定TCP和UDP。

  • hostname:網路主機名稱。

  • hostaddr:IP 位址。

  • service:包含在/etc/services中的名稱。

  • port:連接埠號碼,可以是多個。

回顯資訊說明

運行lsof命令後的回顯資訊樣本如下:

[ecs-user@hostname ~]$ lsof
lsof: WARNING: can't stat() tracefs file system /sys/kernel/debug/tracing
      Output information may be incomplete.
COMMAND    PID  TID TASKCMD          USER   FD      TYPE DEVICE  SIZE/OFF     NODE NAME
systemd      1                       root  cwd   unknown                          /proc/1/cwd (readlink: Permission denied)
systemd      1                       root  rtd   unknown                          /proc/1/root (readlink: Permission denied)
systemd      1                       root  txt   unknown                          /proc/1/exe (readlink: Permission denied)
systemd      1                       root NOFD                                    /proc/1/fd (opendir: Permission denied)
kthreadd     2                       root  cwd   unknown                          /proc/2/cwd (readlink: Permission denied)
kthreadd     2                       root  rtd   unknown                          /proc/2/root (readlink: Permission denied)
kthreadd     2                       root  txt   unknown                          /proc/2/exe (readlink: Permission denied)
kthreadd     2                       root NOFD                                    /proc/2/fd (opendir: Permission denied)
rcu_gp       3                       root  cwd   unknown                          /proc/3/cwd (readlink: Permission denied)
rcu_gp       3                       root  rtd   unknown                          /proc/3/root (readlink: Permission denied)
rcu_gp       3                       root  txt   unknown                          /proc/3/exe (readlink: Permission denied)
rcu_gp       3                       root NOFD                                    /proc/3/fd (opendir: Permission denied)

相關參數說明如下。

參數

說明

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]

重新整理次數。如果不指定重新整理次數,但指定了重新整理時間間隔,重新整理操作不會自動停止,您需要按Ctrl+C鍵退出vmstat程式。

使用樣本

執行如下命令,使用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命令用於查看當前登入系統的使用者資訊,返回結果類似如下。

[root@xxx3Z ~]# who
root    pts/0         2025-01-27 11:22 (1xxx4)
root    pts/1         2025-01-27 11:29 (xxx)

w

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

[xxx ~]# w
 11:30:45 up 2 days, 18:08,  2 users,  load average: 0.04, 0.05, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    1xxx4            11:22    7:47   0.02s  0.02s -bash
root     pts/1    xxx              11:29    6.00s  0.02s  0.00s w

users

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

[root@xxx ~]# users
root root

last

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

[root@xxx ~]# last
root     pts/1        xxx              Mon Jan 27 11:29   still logged in
root     pts/1        xxx              Mon Jan 27 11:29 - 11:29  (00:00)
root     pts/0        xxx              Mon Jan 27 11:22   still logged in
root     pts/0        xxx              Mon Jan 27 11:14 - 11:21  (00:07)
root     pts/0        xxx              Sun Jan 26 16:42 - 11:14  (18:31)
john     pts/0        xxx              Sun Jan 26 16:30 - 16:42  (00:11)
root     pts/0        xxx              Sun Jan 26 16:30 - 16:30  (00:00)
root     pts/0        xxx              Sun Jan 26 16:25 - 16:30  (00:04)
root     pts/1        xxx              Fri Jan 24 17:20 - 19:33  (02:13)
root     pts/0        xxx              Fri Jan 24 17:06 - 23:20  (06:14)
root     pts/0        xxx              Fri Jan 24 17:06 - 17:06  (00:00)
reboot   system boot  xxx              Fri Jan 24 17:01   still  running

lastb

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

[r*** ~]# lastb
john    ssh:notty    xxx    '4    Mon Jan 27 11:33 - 11:33  (00:00)
root    ssh:notty    xxx    '4    Mon Jan 27 11:33 - 11:33  (00:00)
root    ssh:notty    xxx    '4    Mon Jan 27 11:33 - 11:33  (00:00)
root    ssh:notty    xxx    '4    Mon Jan 27 11:33 - 11:33  (00:00)
root    pts/0                     Sun Jan 26 16:30 - 16:30  (00:00)

btmp begins Sun Jan 26 16:30:01 2025

lastlog

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

[rxxx ~]# lastlog
Username         Port     From             Latest
root             pts/1    8xxx       xxx40  Mon Jan 27 11:29:34 +0800 2025
bin                                        Never logged in
daemon                                     Never logged in
adm                                        Never logged in
lp                                         Never logged in
sync                                       Never logged in
shutdown                                   Never logged in
halt                                       Never logged in
mail                                       Never logged in
operator                                   Never logged in
games                                      Never logged in
ftp                                        Never logged in
nobody                                     Never logged in
dbus                                       Never logged in
systemd-coredump                           Never logged in
systemd-resolve                            Never logged in
tss                                        Never logged in
polkitd                                    Never logged in
unbound                                    Never logged in
chrony                                     Never logged in
sshd                                       Never logged in
nscd                                       Never logged in
postfix                                    Never logged in
tcpdump                                    Never logged in
rpc                                        Never logged in
rpcuser                                    Never logged in
squid                                      Never logged in
ecs-instance-connect                       Never logged in
jack                                       Never logged in
john             pts/0                     Mon Jan 27 11:21:25 +0800 2025
john1                                      Never logged in

cat /var/log/secure

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

[root@xxx 3Z ~]# cat /var/log/secure
Jan 26 11:18:17 i    3Z sshd[6646]: Accepted password for root from 1.xxx.xxx.xxx 6 port 2090 ssh2
Jan 26 11:18:17 i    3Z systemd[6652]: pam_unix(systemd-user:session): session opened for user root by (uid=0)
Jan 26 11:18:17 i    3Z sshd[6646]: pam_unix(sshd:session): session opened for user root by (uid=0)
Jan 26 13:33:22 i    3Z sshd[6646]: pam_unix(sshd:session): session closed for user root
Jan 26 16:25:44 i    3Z useradd[6815]: new group: name=ecs-instance-connect, GID=992
Jan 26 16:25:44 i    3Z useradd[6815]: new user: name=ecs-instance-connect, UID=995, GID=992, home=/home/ecs-instance-connect, shell=/sbin/nologin
Jan 26 16:25:44 i    3Z sudo[6835]:      root : PWD=/root ; USER=root ; COMMAND=/bin/systemctl daemon-reload
Jan 26 16:25:44 i    3Z systemd[6839]: pam_unix(systemd-user:session): session opened for user root by (uid=0)
Jan 26 16:25:44 i    3Z sudo[6835]: pam_unix(sudo:session): session opened for user root by (uid=0)
Jan 26 16:25:45 i    3Z sudo[6835]: pam_unix(sudo:session): session closed for user root
Jan 26 16:25:45 i    3Z sudo[6876]:      root : PWD=/root ; USER=root ; COMMAND=/bin/systemctl restart sshd
Jan 26 16:25:45 i    3Z sudo[6876]: pam_unix(sudo:session): session opened for user root by (uid=0)
Jan 26 16:25:45 i    3Z sshd[1055]: Received signal 15; terminating.
Jan 26 16:25:45 i    3Z sshd[6881]: Server listening on 0.0.0.0 port 22.
Jan 26 16:25:45 i    3Z sshd[6881]: Server listening on :: port 22.
Jan 26 16:25:45 i    3Z sudo[6876]: pam_unix(sudo:session): session closed for user root
Jan 26 16:25:48 i    3Z sshd[6886]: Accepted publickey for root from 1.xxx.xxx.xxx 74 port 2072 ssh2: ED25519 SHA256:xQdusPE/xxx            jUd5qN0EU
Jan 26 16:25:48 i    3Z sshd[6886]: pam_unix(sshd:session): session opened for user root by (uid=0)
Jan 26 16:26:01 i    3Z useradd[6962]: new group: name=jack, GID=1000
Jan 26 16:26:01 i    3Z useradd[6962]: new user: name=jack, UID=1000, GID=1000, home=/home/jack, shell=/bin/bash
Jan 26 16:26:38 i    3Z useradd[6971]: new group: name=john, GID=1001
Jan 26 16:26:38 i    3Z useradd[6971]: new user: name=john, UID=1001, GID=1001, home=/home/john, shell=/bin/bash
Jan 26 16:26:58 i    3Z passwd[6978]: pam_unix(passwd:chauthtok): password changed for john
Jan 26 16:27:43 i    3Z sudo[6984]:      root : TTY=pts/0 ; PWD=/root ; USER=root ; COMMAND=/sbin/usermod -aG sudo john
Jan 26 16:27:43 i    3Z sudo[6984]: pam_unix(sudo:session): session opened for user root by root(uid=0)
Jan 26 16:27:43 i    3Z sudo[6984]: pam_unix(sudo:session): session closed for user root
Jan 26 16:29:01 i    3Z sudo[6992]:      root : TTY=pts/0 ; PWD=/root ; USER=root ; COMMAND=/sbin/usermod -aG wheel john
Jan 26 16:29:01 i    3Z sudo[6992]: pam_unix(sudo:session): session opened for user root by root(uid=0)

系統管理使用者

在Linux系統中,您可以通過useradd、wheel、passwd和userdel等命令有效地管理系統使用者及其許可權。

useradd

命令介紹

useradd 命令主要用於添加新使用者。該命令和adduser功能基本相同。建立完成後,您可以通過cat /etc/passwd | grep username查看使用者資訊。

  • 在建立使用者時,需要root許可權或相應的sudo許可權。

  • 使用 useradd 建立使用者後,建議立即設定使用者密碼。

  • 確保在建立使用者時,主組和附加組是存在的,否則會導致添加使用者失敗。

常用參數說明

參數

說明

-d

指定使用者的主目錄。如果不指定,系統會使用預設的 /home/使用者名稱 作為主目錄。

-m

建立使用者的主目錄。如果指定了 -d 選項,同時也添加此選項,則會建立該目錄。

-s

指定使用者的登入 Shell,預設是 /bin/bash。

-g

指定使用者的主組。如果組不存在,則需要先建立。

-G

指定使用者加入的附加組。多個附加組直接用英文逗號隔開。

-p

為使用者佈建密碼。注意,該密碼需要經過加密,不應直接在命令列中使用純文字密碼。樣本如下:

sudo useradd -p $(openssl passwd -6 '純文字密碼') newusername

-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許可權。

    1. 使用 useradd 命令建立一個新使用者john。

      useradd john
    2. 為新建立的使用者佈建密碼。

      passwd john
    3. 為了讓新使用者擁有 root 許可權,可以將使用者添加到 wheel 組中。wheel 組通常用於授予使用者 sudo 許可權。執行grep '^wheel:' /etc/group查詢wheel群組成員。

      sudo usermod -aG wheel john
    4. 測試新使用者的sudo許可權。切換到新使用者,並嘗試使用 sudo 命令:

      su - john
      sudo ls /root

      如果一切正常,會被要求輸入密碼,輸入正確的密碼後,系統將列出 /root 目錄的內容,表明新使用者擁有 sudo 許可權,也可以使用john進行遠程登入。

    5. (可選)修改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