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主要參數說明如下
使用樣本
按指定採集頻率查看系統指標
運行如下命令,按指定採集頻率展示系統指標。樣本中指定採集頻率為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 aarch64x86架構顯示:
[root@iZbp144wor*** ~]# uname -m x86_64 [root@iZbp144wor*** ~]# arch x86_64
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架構顯示:
[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 ssbsx86架構顯示:
[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 2022ARM架構顯示:
[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/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命令後的回顯資訊樣本如下:
[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] | 重新整理次數。如果不指定重新整理次數,但指定了重新整理時間間隔,重新整理操作不會自動停止,您需要按 |
使用樣本
執行如下命令,使用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 wusers
users命令用於顯示當前登入的使用者名稱,返回結果類似如下。
[root@xxx ~]# users
root rootlast
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 runninglastb
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 2025lastlog
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 incat /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 | 指定使用者的主目錄。如果不指定,系統會使用預設的 |
-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