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(基本输入输出系统)中提取和显示与硬件相关的信息。它读取 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。参考以下步骤进行操作。
查看系统挂载的块存储设备。
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