全部產品
Search
文件中心

Elastic Compute Service:Linux系統常用命令

更新時間:Apr 17, 2025

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

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

資源監控欄位說明

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

image

主要參數說明如下

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

系統摘要資訊欄位說明

參數(行)

說明

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 3
    說明

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

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

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

    image

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

    按鍵

    說明

    ↑,↓

    進列欄位選擇。

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

    空格

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

    s

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

    q

    退出視圖欄位管理介面。

  • 使用top命令的互動模式

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

    按鍵

    說明

    1

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

    u

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

    E

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

    x

    顯示排序列。

    y

    顯示運行中的進程。

    ?

    顯示協助資訊。

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

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

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

    cd /proc/1352
    ls -ail

    image

  • 通過PID結束對應進程

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

    image

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 -march命令查看CPU架構,不同架構回顯資訊如下:

    ARM架構顯示:

    image

    x86架構顯示:

    image

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

    image

  • x86架構顯示:

    image

查看OS資訊

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

  • x86架構顯示:

    image

  • ARM架構顯示:

    image

查看管理磁碟

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命令後的回顯資訊樣本如下:

image

相關參數說明如下。

參數

說明

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等檔案中。

  • whowusers等命令通過/var/run/utmp檔案查詢當前登入使用者的資訊。

  • last命令通過/var/log/wtmp檔案查詢當前與過去登入系統的使用者的資訊。

  • lastb命令通過/var/log/btmp檔案查詢所有登入系統失敗的使用者的資訊。

  • lastlog命令通過/var/log/lastlog檔案查詢使用者最後一次登入的資訊。

who

who命令用於查看當前登入系統的使用者資訊,返回結果類似如下。

image

w

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

image

users

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

image

last

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

image

lastb

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

image

lastlog

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

image

cat /var/log/secure

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

image

系統管理使用者

在Linux系統中,您可以通過useraddwheelpasswduserdel等命令有效地管理系統使用者及其許可權。

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