系统信息及进程管理命令

系统信息及进程管理

一、系统信息查看

常用命令:uname、hostnam、hostnamectl、uptime、df、du、free、lscpu

1、uname

(1)、命令简介

uname 是一个在 Unix 和类 Unix 系统(如 Linux、macOS)中常用的命令行工具,用于显示系统信息。它的名称来源于 "Unix name"。

(2)、命令选项清单

text-x-sh 复制代码
#命令语法:uname [选项]
#选项									说明
-a 或 --all 				显示所有信息(相当于同时使用 -snrvmpio)。
-s 或 --kernel-name			显示内核名称(如 "Linux"、"Darwin")。
-n 或 --nodename			显示网络节点的主机名。
-r 或 --kernel-release		显示内核版本(如 "5.4.0-80-generic")。
-v 或 --kernel-version		显示内核的构建信息或版本详情。
-m 或 --machine				显示硬件架构(如 "x86_64"、"arm64")。
-p 或 --processor			显示处理器类型(可能与 -m 相同,部分系统不支持)。
-i 或 --hardware-platform	显示硬件平台(部分系统不支持)。
-o 或 --operating-system	显示操作系统名称(如 "GNU/Linux")。

(3)、常用命令示例

text-x-sh 复制代码
root@master:~# uname -a #显示所有信息
Linux master 5.15.0-143-generic #153-Ubuntu SMP Fri Jun 13 19:10:45 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux
root@master:~# uname -s	#显示内核名称
Linux
root@master:~# uname -m #显示硬件架构
x86_64
root@master:~# uname -r #显示内核版本
5.15.0-143-generic

2、hostname

(1)、命令简介

hostname 是一个用于 查看或临时修改系统主机名 的命令,适用于大多数 Unix/Linux 系统。它比 hostnamectl 更基础,但功能较为有限(特别是在 systemd 系统中,hostnamectl 是更现代的替代方案)。

(2)、命令选项清单

text-x-sh 复制代码
#命令语法:hostname [选项] [新主机名]  # 查看或设置主机名
#选项			说明					常用示例								输出示例
无选项		显示当前主机名			hostname							ubuntu
-a			显示所有主机别名			hostname -a							(通常为空)
-A			显示所有FQDN(长主机名)	hostname -A						ubuntu.example.com
-b			若主机名为空,设为默认		sudo hostname -b				(无输出,设置默认名)
-d			显示DNS域名				hostname -d						example.com
-f			显示完整FQDN				hostname -f						ubuntu.example.com
-F <文件>	从文件读取主机名			sudo hostname -F /etc/newhost	(无输出,设置主机名)
-i			显示主IP(依赖hosts)		hostname -i						127.0.0.1(可能不准确)
-I			显示所有IP地址			hostname -I						192.168.1.100 10.0.0.5
-s			显示短主机名				hostname -s						ubuntu
-y			显示NIS域名				hostname -y						nisdomain
-V/-h		显示版本/帮助				hostname -V						hostname 3.23

(3)、常用命令示例

text-x-sh 复制代码
root@master:~# hostname	#显示当前主机名
master
root@master:~# hostname -a #显示所有主机别名,未设置输出为空

root@master:~# hostname -A	#显示所有FQDN(长主机名)
192.168.0.117 172.17.0.1 
root@master:~# hostname -b 	#若主机名为空,设为默认
master
root@master:~# hostname -d	#显示DNS域名,本机未设置
root@master:~# hostname -f	#显示完整FQDN
master
root@master:~# hostname -i	#显示主IP(依赖hosts)
192.168.0.117 172.17.0.1 fe80::20c:29ff:feb6:e83e
root@master:~# hostname -I	#显示所有IP地址
192.168.0.117 172.17.0.1 
root@master:~# hostname -s	#显示短主机名
master
root@master:~# hostname -y	#显示NIS域名,本机未设置
hostname: Local domain name not set
root@master:~# hostname -V	#显示版本/帮助
hostname 3.23
root@master:~# echo "Test" > hostname_test
root@master:~# hostname -F ./hostname_test #读取文件内容,临时设置新hostname
root@master:~# hostname
Test

3、hostnamectl

(1)、命令简介

hostnamectlsystemd 提供的命令行工具,用于 管理系统主机名和相关系统信息 (如操作系统、内核版本、硬件架构等)。它是现代 Linux 发行版(如 Ubuntu、CentOS、Fedora 等)中推荐的主机名管理工具,相比传统的 hostname 命令功能更强大,且修改永久生效。

(2)、命令选项清单

text-x-sh 复制代码
#命令语法:hostnamectl [选项] [子命令] [参数]
#选项				说明
--static		显示静态主机名(来自 /etc/hostname)		hostnamectl --static
--transient		显示临时主机名(运行时)					hostnamectl --transient
--pretty		显示用户友好的主机名(可自定义)				hostnamectl --pretty
--json=pretty	以 JSON 格式输出(易读)					hostnamectl --json=pretty
-H/--host		远程操作其他主机(需 SSH 权限)				hostnamectl -H user@remote
--help			显示帮助信息								hostnamectl --help
--version		显示版本信息								hostnamectl --version
#子命令
status 				- 显示当前主机信息
hostname [NAME] 	- 查看/设置系统主机名
icon-name [NAME] 	- 查看/设置图标名称
chassis [NAME] 		- 查看/设置设备类型,desktop(台式机)、laptop(笔记本)、server(服务器)、vm(虚拟机)等
deployment [NAME] 	- 查看/设置部署环境
location [NAME] 	- 查看/设置物理位置

(3)、常用命令示例

text-x-sh 复制代码
root@master:~# hostnamectl status #或直接hostnamectl ,显示当前主机信息
   Static hostname: master
Transient hostname: Test
         Icon name: computer-vm
           Chassis: vm
        Machine ID: f5d70adfffc44e54b0fa69c294f4cac0
           Boot ID: ef1c4ed4701745048a077dadda5a0afe
    Virtualization: vmware
  Operating System: Ubuntu 22.04.5 LTS              
            Kernel: Linux 5.15.0-143-generic
      Architecture: x86-64
   Hardware Vendor: VMware, Inc.
    Hardware Model: VMware20,1
root@Test:~# hostname  #原主机名
Test
root@Test:~# hostnamectl set-hostname "master" #设置新主机名
root@Test:~# hostname 	#显示更改后主机名
master
root@Test:~# hostnamectl set-chassis server #设置主机类型为server-服务器
root@Test:~# hostnamectl chassis
server	#设置成功
# 通过 SSH 修改远程主机
root@Test:~# hostnamectl -H root@192.168.1.100 set-hostname "node01"
# 检查当前主机名是否被正确解析
root@Test:~# hostnamectl --static
# 若服务(如 Nginx)依赖 FQDN,确保 /etc/hosts 包含:
# 192.168.1.100 web01.example.com web01
root@Test:~# hostnamectl location "1-1"      #设置机架号   
root@Test:~# hostnamectl location
1-1

4、uptime

(1)、命令简介

uptime 是一个简单但实用的 Linux/Unix 命令,用于 显示系统的运行时间、当前登录用户数以及系统负载。它可以帮助管理员快速了解系统的运行状态。

(2)、命令选项清单

text-x-sh 复制代码
#命令语法:uptime [选项]
#选项		说明
-p		仅显示系统运行时间(简洁模式)
-s		显示系统启动时间(since)
-h		以人类可读格式输出(如 "3 days")
-V		显示版本信息

(3)、常用命令示例

text-x-sh 复制代码
root@Test:~# uptime #输出为系统时间 运行时间 当前登录用户数量 系统1分钟、5分钟、15分钟的平均负载。
14:25:29 up 1 day,  1:14,  3 users,  load average: 0.00, 0.01, 0.00
#14:25:29 系统时间
#up 1 day,  1:14 运行时间
#3 users当前登录用户数量
#load average: 0.00, 0.01, 0.00 系统1分钟、5分钟、15分钟的平均负载
root@Test:~# uptime -p #查看系统运行时间
up 1 day, 1 hour, 16 minutes
root@Test:~# uptime -s #查看系统启动时间
2025-07-21 13:11:20

5、df

(1)、命令简介

df (Disk Filesystem)用于 查看磁盘空间使用情况,显示文件系统的总容量、已用空间、可用空间及挂载点信息。是 Linux/Unix 系统中最常用的磁盘管理命令之一。

(2)、命令选项清单

text-x-sh 复制代码
#命令语法:df [选项] [文件或目录]
#选项		说明
-h			以易读格式显示(如 KB、MB、GB)
-T			显示文件系统类型(如 ext4、xfs)
-i			显示 inode 使用情况(而非磁盘空间)
-a			显示所有文件系统(包括伪文件系统如 proc)
-x <类型>	排除指定类型的文件系统
--total		在最后一行显示总计信息

(3)、常用命令示例

text-x-sh 复制代码
root@Test:~# df #查看磁盘空间
Filesystem                        1K-blocks    Used Available Use% Mounted on
tmpfs                                201020    1184    199836   1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv  11218472 8192824   2433984  78% /
tmpfs                               1005096       0   1005096   0% /dev/shm
tmpfs                                  5120       0      5120   0% /run/lock
/dev/sda2                           1992552  258544   1612768  14% /boot
/dev/sda1                           1098632    6228   1092404   1% /boot/efi
tmpfs                                201016       4    201012   1% /run/user/1000
root@Test:~# df -h #易读格式输出
Filesystem                         Size  Used Avail Use% Mounted on
tmpfs                              197M  1.2M  196M   1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv   11G  7.9G  2.4G  78% /
tmpfs                              982M     0  982M   0% /dev/shm
tmpfs                              5.0M     0  5.0M   0% /run/lock
/dev/sda2                          2.0G  253M  1.6G  14% /boot
/dev/sda1                          1.1G  6.1M  1.1G   1% /boot/efi
tmpfs                              197M  4.0K  197M   1% /run/user/1000
root@Test:~# df -Th #显示文件系统类型
Filesystem                        Type   Size  Used Avail Use% Mounted on
tmpfs                             tmpfs  197M  1.2M  196M   1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv ext4    11G  7.9G  2.4G  78% /
tmpfs                             tmpfs  982M     0  982M   0% /dev/shm
tmpfs                             tmpfs  5.0M     0  5.0M   0% /run/lock
/dev/sda2                         ext4   2.0G  253M  1.6G  14% /boot
/dev/sda1                         vfat   1.1G  6.1M  1.1G   1% /boot/efi
tmpfs                             tmpfs  197M  4.0K  197M   1% /run/user/1000
root@Test:~# df -i #查看inode使用情况,磁盘不满,但是inode使用率100%也会导致磁盘无法写入
Filesystem                        Inodes  IUsed  IFree IUse% Mounted on
tmpfs                             251274    800 250474    1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv 719488 139448 580040   20% /
tmpfs                             251274      1 251273    1% /dev/shm
tmpfs                             251274      3 251271    1% /run/lock
/dev/sda2                         131072    310 130762    1% /boot
/dev/sda1                              0      0      0     - /boot/efi
tmpfs                              50254     25  50229    1% /run/user/1000
root@Test:~# df -h /home #查看指定目录大小
Filesystem                         Size  Used Avail Use% Mounted on
/dev/mapper/ubuntu--vg-ubuntu--lv   11G  7.9G  2.4G  78% /

6、du

(1)、命令简介

du (Disk Usage)用于 统计文件和目录的磁盘使用情况 ,是排查存储空间问题的核心工具。与 df 不同,du 从文件层级计算实际占用空间,而非文件系统级别。

(2)、命令选项清单

text-x-sh 复制代码
#命令语法:du [选项] [文件/目录]
#选项						说明
-h						以易读格式显示(KB/MB/GB)
-s						仅显示总用量(不递归子目录)
-a						显示所有文件(包括普通文件)
--max-depth=N			限制递归深度(如 --max-depth=1)
-c						最后显示总计
--exclude="PATTERN"		排除匹配的文件/目录
--time					显示文件修改时间

(3)、常用命令示例

text-x-sh 复制代码
root@Test:/opt# du -h #查看当前目录占用空间
4.0K    ./containerd/bin
4.0K    ./containerd/lib
12K     ./containerd
692M 
root@Test:/opt# du -sh /opt #仅显示目录总大小(不显示子目录)
692M    /opt
root@Test:/opt# du -h --max-depth=1 /opt/ #显示目录及其子目录大小(限制深度为1)
12K     /opt/containerd
692M    /opt/
root@Test:/opt# du -ah /opt	#显示所有文件(包括普通文件)
4.0K    /opt/containerd/bin
4.0K    /opt/containerd/lib
12K     /opt/containerd
692M    /opt/vulnerables.tar
692M    /opt
root@Test:/opt# du -h --exclude="*.tar" /opt #排除特定文件(tar)类型
4.0K    /opt/containerd/bin
4.0K    /opt/containerd/lib
12K     /opt/containerd
16K     /opt

7、free

(1)、命令简介

free 用于 查看系统内存(RAM)和交换空间(Swap)的使用情况,是 Linux 系统监控的必备工具。它能直观显示内存总量、已用量、空闲量及缓存/缓冲区的占用情况。

(2)、命令选项清单

text-x-sh 复制代码
#命令语法:free [选项]
#选项			说明
-h			以人类可读格式显示(KB/MB/GB)
-s <秒>		每隔 N 秒自动刷新(如 -s 2)
-c <次数>	与 -s 联用,设置刷新次数
-t			显示 物理内存 + Swap 的总和
-w			分开显示缓存(cache)和缓冲区(buffers)
--help		显示帮助信息

(3)、常用命令示例

text-x-sh 复制代码
root@Test:/opt# free -h #查看内存信息
               total        used        free      shared  buff/cache   available
Mem:           1.9Gi       278Mi        68Mi       1.0Mi       1.6Gi       1.5Gi
Swap:          2.0Gi       0.0Ki       2.0Gi
#total:总内存量。
#used:已用内存(包括缓存和缓冲区)。
#free:完全未被使用的内存。
#shared:多个进程共享的内存(如 tmpfs)。
#buff/cache:内核缓存(buffers)和页面缓存(cache)占用的内存。
#buffers:块设备(如磁盘)的临时缓存。
#cache:文件系统的页面缓存(加速文件读写)。
#available:真正可用的内存(含缓存可回收部分,更准确)。
#Swap:交换空间的使用情况。
root@Test:/opt# free -h -s 2 -c 2 #每隔 2 秒刷新一次(共 2 次)
               total        used        free      shared  buff/cache   available
Mem:           1.9Gi       277Mi        68Mi       1.0Mi       1.6Gi       1.5Gi
Swap:          2.0Gi       0.0Ki       2.0Gi

               total        used        free      shared  buff/cache   available
Mem:           1.9Gi       277Mi        68Mi       1.0Mi       1.6Gi       1.5Gi
Swap:          2.0Gi       0.0Ki       2.0Gi
root@Test:/opt# free -th #显示总和(物理内存 + Swap)
               total        used        free      shared  buff/cache   available
Mem:           1.9Gi       277Mi        68Mi       1.0Mi       1.6Gi       1.5Gi
Swap:          2.0Gi       0.0Ki       2.0Gi
Total:         3.9Gi       278Mi       2.1Gi

8、lscpu

(1)、命令简介

lscpu 用于 显示 CPU 架构信息,包括处理器型号、核心数、线程数、缓存大小等。它是 Linux 系统下快速获取 CPU 硬件信息的标准工具。

(2)、命令选项清单

text-x-sh 复制代码
#命令语法:lscpu [选项]
#选项			说明
-a			显示所有信息(包括离线 CPU)
-b			仅显示在线 CPU 的信息
-c			只显示指定的列(如 -c=CPU,Core,Socket)
-J			以 JSON 格式输出
-p			以可解析的格式输出(用于脚本)
-s <目录>	从指定目录读取 CPU 信息(默认为 /sys)
-x			以十六进制显示 CPU 掩码

(3)、常用命令示例

text-x-sh 复制代码
root@Test:/opt# lscpu 
Architecture:             x86_64
  CPU op-mode(s):         32-bit, 64-bit
  Address sizes:          45 bits physical, 48 bits virtual
  Byte Order:             Little Endian
CPU(s):                   2
  On-line CPU(s) list:    0,1
Vendor ID:                GenuineIntel
  Model name:             Intel(R) Core(TM) i3-8100 CPU @ 3.60GHz
    CPU family:           6
    Model:                158
    Thread(s) per core:   1
    Core(s) per socket:   2
    Socket(s):            1
    Stepping:             11
    BogoMIPS:             7199.99
    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 arch_perfmon nopl xtopology tsc_r
                          eliable nonstop_tsc cpuid tsc_known_freq pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3d
                          nowprefetch invpcid_single pti ssbd ibrs ibpb stibp fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid rdseed adx smap clflushopt xsaveopt xsavec xgetbv1 xsaves arat md_clear flush_l
                          1d arch_capabilities
Virtualization features:  
  Hypervisor vendor:      VMware
  Virtualization type:    full
Caches (sum of all):      
  L1d:                    64 KiB (2 instances)
  L1i:                    64 KiB (2 instances)
  L2:                     512 KiB (2 instances)
  L3:                     6 MiB (1 instance)
NUMA:                     
  NUMA node(s):           1
  NUMA node0 CPU(s):      0,1
Vulnerabilities:          
  Gather data sampling:   Unknown: Dependent on hypervisor status
  Itlb multihit:          KVM: Mitigation: VMX unsupported
  L1tf:                   Mitigation; PTE Inversion
  Mds:                    Mitigation; Clear CPU buffers; SMT Host state unknown
  Meltdown:               Mitigation; PTI
  Mmio stale data:        Mitigation; Clear CPU buffers; SMT Host state unknown
  Reg file data sampling: Not affected
  Retbleed:               Mitigation; IBRS
  Spec rstack overflow:   Not affected
  Spec store bypass:      Mitigation; Speculative Store Bypass disabled via prctl and seccomp
  Spectre v1:             Mitigation; usercopy/swapgs barriers and __user pointer sanitization
  Spectre v2:             Mitigation; IBRS; IBPB conditional; STIBP disabled; RSB filling; PBRSB-eIBRS Not affected; BHI SW loop, KVM SW loop
  Srbds:                  Unknown: Dependent on hypervisor status
  Tsx async abort:        Not affected
#字段						说明
#Architecture			CPU 架构(如 x86_64、aarch64)
#CPU(s)					逻辑 CPU 总数(物理核心 × 线程数)
#Thread(s) per core		每个核心的线程数(超线程技术)
#Core(s) per socket		每个物理 CPU 的核心数
#Socket(s)				物理 CPU 插槽数(服务器常见多插槽)
#Model name				CPU 型号
#CPU MHz				当前 CPU 频率
#L1d/L1i/L2/L3 cache	各级缓存大小
root@Test:/opt# lscpu | grep -E "Architecture|CPU\(s\)|Model name|MHz" #简化查看
Architecture:                         x86_64
CPU(s):                               2
On-line CPU(s) list:                  0,1
Model name:                           Intel(R) Core(TM) i3-8100 CPU @ 3.60GHz
NUMA node0 CPU(s):                    0,1
root@Test:/opt# lscpu | grep "Thread(s) per core" #查看是否启用超线程
Thread(s) per core:                   1
root@Test:/opt# lscpu -J #以json格式输出
root@Test:/opt# lscpu -p | grep -v "^#" | cut -d "," -f 2 | sort -u | wc -l #统计物理核心数
2
root@Test:/opt# cat /proc/cpuinfo | grep flags | head -1 #检查 CPU 支持的指令集
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 arch_perfmon nopl xtopology tsc_reliable nonstop_tsc cpuid tsc_known_freq pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single pti ssbd ibrs ibpb stibp fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid rdseed adx smap clflushopt xsaveopt xsavec xgetbv1 xsaves arat md_clear flush_l1d arch_capabilities

二、进程管理

**常用命令:**ps、top、kill、pkill、bg/fg

1、ps

(1)、命令简介

ps 命令是 Linux/Unix 系统中用于查看当前进程状态的工具,全称为 Process Status。它可以显示正在运行的进程信息,如进程 ID(PID)、CPU 占用、内存使用、运行时间等。

(2)、命令选项清单

text-x-sh 复制代码
#命令语法:ps [选项]
#选项(可以组合使用)		说明(选项前有-是UNIX 风格,不加的是BSD 风格)
-e 或 -A				显示所有进程(包括其他用户的进程)
-f						完整格式输出(UID, PID, PPID, CMD 等)
-u <user>				显示指定用户的进程
-p <PID>				显示指定 PID 的进程
-C <cmd>				按命令名过滤(如 ps -C nginx)
--sort=<key>			按指定字段排序(如 --sort=-%cpu 按 CPU 降序)
-o <fields>				自定义输出字段(如 ps -eo pid,cmd,%mem)
-H						显示进程层次结构(缩进表示父子关系)
--forest				树状显示进程关系(类似 pstree)
a						显示所有终端关联的进程(包括其他用户的)
u						以用户友好格式显示(含 CPU、内存等)
x						显示不关联终端的进程(如守护进程)
l						长格式输出(更多详细信息)
j						显示作业控制信息(会话 ID、进程组 ID)
-T						显示线程(LWP 列表示线程 ID)
  • 使用-o参数时,自定义常用字段如下

    • pcpu:CPU占用百分比

    • pmem:内存占用百分比

    • vsz:虚拟内存大小(KB)

    • rss:实际内存占用(KB)

    • stat :进程状态(如 S =睡眠, R =运行, Z=僵尸)

  • ps输出内容中UID、PID、PPID、C、STIME、TTY、TIME、CMD说明

列名 全称 说明
UID User ID 运行该进程的用户 ID(或用户名,取决于 ps 选项)。
PID Process ID 进程的唯一标识号(杀死进程时使用,如 kill PID)。
PPID Parent Process ID 父进程的 PID(启动该进程的进程 ID)。
C CPU Utilization CPU 占用率(百分比,通常是一个时间段的平均值)。
STIME Start Time 进程启动的时间(格式为 HH:MM月-日,取决于系统)。
TTY TeleTYpe 进程关联的终端设备(? 表示无终端,如守护进程)。
TIME CPU Time 进程占用 CPU 的总时间(格式为 HH:MM:SS)。
CMD Command 启动进程的命令(包括参数,可能是截断的)。

(3)、常用命令示例

text-x-sh 复制代码
root@master:~# ps -ef #查看全部进程,以下仅为部分示例
UID          PID    PPID  C STIME TTY          TIME CMD
root           1       0  0 Jul21 ?        00:00:02 /sbin/init
root           2       0  0 Jul21 ?        00:00:00 [kthreadd]
root           3       2  0 Jul21 ?        00:00:00 [rcu_gp]
root@master:~# ps -u root -f  #查看root用户的所有进程,以下仅为部分示例
UID          PID    PPID  C STIME TTY          TIME CMD
root           1       0  0 Jul21 ?        00:00:02 /sbin/init
root           2       0  0 Jul21 ?        00:00:00 [kthreadd]
root@master:~# ps -p 17190 -o pid,cmd #仅显示PID=17190的进程pid,cmd信息
    PID CMD
  17190 [kworker/u4:2-events_power_efficient]
root@master:~# ps -e --sort=-%mem | head -n 5  #查看内存占用最高的5个进程
    PID TTY          TIME CMD
    923 ?        00:00:12 dockerd
    844 ?        00:00:25 containerd
    837 ?        00:00:07 snapd
    521 ?        00:00:08 multipathd
root@master:~# ps aux  #显示所有进程(类似 `ps -ef`,但含 %CPU/%MEM)
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root           1  0.0  0.5 166340 11784 ?        Ss   Jul21   0:02 /sbin/init
root           2  0.0  0.0      0     0 ?        S    Jul21   0:00 [kthreadd]
root           3  0.0  0.0      0     0 ?        I<   Jul21   0:00 [rcu_gp]
root           4  0.0  0.0      0     0 ?        I<   Jul21   0:00 [rcu_par_gp]
root@master:~# ps aux | grep nginx	#查找nginx相关进程
root       17364  0.0  0.1   6480  2264 pts/1    S+   10:07   0:00 grep --color=auto nginx
root@master:~# ps aux --sort=-%cpu #按CPU占用降序排序
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root           1  0.0  0.5 166340 11784 ?        Ss   Jul21   0:02 /sbin/init
root           2  0.0  0.0      0     0 ?        S    Jul21   0:00 [kthreadd]
root           3  0.0  0.0      0     0 ?        I<   Jul21   0:00 [rcu_gp]
root@master:~# ps -T -p 17190 # 查看PID=17190 的线程
    PID    SPID TTY          TIME CMD
  17190   17190 ?        00:00:00 kworker/u4:2-flush-8:0
root@master:~# ps -e u   #混合使用选项,显示所有进程,BSD 风格的 `u` 格式
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root           1  0.0  0.5 166340 11784 ?        Ss   Jul21   0:02 /sbin/init
root           2  0.0  0.0      0     0 ?        S    Jul21   0:00 [kthreadd]
root@master:~# ps -f -u root	# 使用`-f`(完整格式)和`-u`(用户过滤)
UID          PID    PPID  C STIME TTY          TIME CMD
root           1       0  0 Jul21 ?        00:00:02 /sbin/init
root           2       0  0 Jul21 ?        00:00:00 [kthreadd]
root@master:~# ps -f --forest #树状结构显示当前窗口进程
UID          PID    PPID  C STIME TTY          TIME CMD
root       17333   17332  0 09:48 pts/1    00:00:00 sudo su
root       17334   17333  0 09:48 pts/1    00:00:00  \_ su
root       17335   17334  0 09:48 pts/1    00:00:00      \_ bash
root       17370   17335  0 10:10 pts/1    00:00:00          \_ ps -f --forest
root@master:~# ps -A -ostat,ppid | grep -e '[Zz]'  #查找僵尸进程及其父进程,如有需要可以kill查找到进程

2、top

(1)、命令简介

top 是 Linux 系统中一个 实时动态 查看系统进程和资源占用情况的命令行工具,比 ps 更直观,适合监控系统运行状态。

(2)、命令选项清单

text-x-sh 复制代码
#命令行参数(启动时指定选项)
参数							说明
top -d 2				设置刷新间隔为 2 秒(默认 3 秒)
top -p 1234,5678		仅监控指定 PID(多个 PID 用 , 分隔)
top -u mysql			仅显示指定用户(如 mysql)的进程
top -b -n 3 > top.log	以批处理模式运行 3 次后退出,结果保存到文件
top -H -p 1234			显示某个进程的所有线程(配合 -p 使用)
#交互式操作常用快捷键
快捷键				功能
q				退出 top
k				杀死进程(输入 PID 后发送信号,默认 SIGTERM)
r				调整进程优先级(renice,输入 PID 和新的 NI 值)
h				显示帮助
Shift + P		按 CPU 使用率 排序(默认)
Shift + M		按 内存使用率 排序
Shift + T		按 运行时间 排序
Shift + N		按 PID 排序
1				显示所有 CPU 核心的单独使用率
z				切换彩色/黑白显示
c				显示完整命令(包括参数)
W				保存当前配置到 ~/.toprc(下次启动生效)

(3)、常用命令示例

text-x-sh 复制代码
root@master:~# top #直接输入top进入交互界面
top - 10:18:06 up 1 day, 21:06,  3 users,  load average: 0.00, 0.00, 0.00
Tasks: 183 total,   1 running, 182 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :   1963.1 total,    110.4 free,    292.4 used,   1560.3 buff/cache
MiB Swap:   2048.0 total,   2047.5 free,      0.5 used.   1477.5 avail Mem 

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND                                                                                                                              
      1 root      20   0  166340  11784   8356 S   0.0   0.6   0:02.22 systemd                                                                                                                              
      2 root      20   0       0      0      0 S   0.0   0.0   0:00.00 kthreadd
#第1行:系统运行时间、用户数、平均负载(1/5/15 分钟)。
#第2行:任务状态(运行、睡眠、停止、僵尸进程)。
#第3行:CPU 使用率(us=用户空间, sy=内核, id=空闲)。
#第4行:内存使用(total/free/used/buffers)。
#第5行:交换分区(Swap)使用情况。
#进程列表:
#PID:进程 ID
#USER:运行用户
#%CPU:CPU 占用率
#%MEM:内存占用率
#COMMAND:进程名

#部分操作场景
#1、查找当前占用最高CPU最多的进程
运行 top。
按 Shift + P(按 CPU 排序)。
观察最上方的进程

#2、查看当前CPU各核心占用
运行 top。
按 1,可以看到个核心使用率。
top - 10:22:23 up 1 day, 21:11,  3 users,  load average: 0.00, 0.00, 0.00
Tasks: 182 total,   1 running, 181 sleeping,   0 stopped,   0 zombie
%Cpu0  :  0.3 us,  0.0 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu1  :  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st

3、kill

(1)、命令简介

kill 是 Linux/Unix 系统中用于 终止进程 的命令,它通过发送特定的 信号(Signal) 来控制进程的行为(如结束、重启、暂停等)。

(2)、命令选项清单

text-x-sh 复制代码
#命令语法:kill [-s sigspec | -n signum | -sigspec] pid | jobspec ...
		 kill -l [sigspec]
#语法说明:
pid|jobspec:(
1)pid:进程 ID(如 kill 1234 发送 SIGTERM 给 PID 1234)。
			(2)jobspec:作业 ID(如 kill %1 发送 SIGTERM 给作业 1,仅限 shell 内置命令支持)。
-s sigspec / -n signum / -sigspec:
指定信号,可以是信号名称(如 -s SIGKILL)、信号编号(如 -n 9)或直接写信号名/编号(如 -9 或 -SIGKILL)。
-l / -L:
列出所有支持的信号名称。可搭配参数查询特定编号对应的信号名(如 kill -l 9 输出 KILL)。

命令选项					说明
-s sig			使用信号名称(如 -s SIGINT)。
-n sig			使用信号编号(如 -n 2 等价于 SIGINT)。
-l [sigspec]	列出信号名称(无参数时列出全部,有参数时翻译编号,如 kill -l 9)。
-L				同 -l(兼容性选项)。

信号编号说明:

text-x-yaml 复制代码
#信号编号		信号名	作用						示例
1			SIGHUP	挂起(重新加载配置)		kill -1 1234
2			SIGINT	中断(等同 Ctrl+C)	kill -2 1234
9			SIGKILL	强制终止(不可被捕获)	kill -9 1234
15			SIGTERM	默认终止(允许进程清理)	kill -15 1234
18			SIGCONT	继续运行已暂停的进程	kill -18 1234
19			SIGSTOP	暂停进程(不可被捕获)	kill -19 1234
#全部标准信号
kill -l
 1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL       5) SIGTRAP
 6) SIGABRT      7) SIGBUS       8) SIGFPE       9) SIGKILL     10) SIGUSR1
11) SIGSEGV     12) SIGUSR2     13) SIGPIPE     14) SIGALRM     15) SIGTERM
16) SIGSTKFLT   17) SIGCHLD     18) SIGCONT     19) SIGSTOP     20) SIGTSTP
21) SIGTTIN     22) SIGTTOU     23) SIGURG      24) SIGXCPU     25) SIGXFSZ
26) SIGVTALRM   27) SIGPROF     28) SIGWINCH    29) SIGIO       30) SIGPWR
31) SIGSYS      34) SIGRTMIN    35) SIGRTMIN+1  36) SIGRTMIN+2  37) SIGRTMIN+3
38) SIGRTMIN+4  39) SIGRTMIN+5  40) SIGRTMIN+6  41) SIGRTMIN+7  42) SIGRTMIN+8
43) SIGRTMIN+9  44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9  56) SIGRTMAX-8  57) SIGRTMAX-7
58) SIGRTMAX-6  59) SIGRTMAX-5  60) SIGRTMAX-4  61) SIGRTMAX-3  62) SIGRTMAX-2
63) SIGRTMAX-1  64) SIGRTMAX
#说明
常见标准信号(1-31)
SIGHUP (1):终端挂起或控制进程终止。常用于通知守护进程重新加载配置。
SIGINT (2):键盘中断(如 Ctrl+C),请求终止进程。
SIGQUIT (3):键盘退出(如 Ctrl+\),请求终止并生成核心转储。
SIGILL (4):非法指令,通常因执行无效的机器指令触发。
SIGTRAP (5):调试陷阱,由调试器使用(如断点)。
SIGABRT (6):调用 abort() 触发的异常终止。
SIGBUS (7):总线错误(非法内存访问,如未对齐访问)。
SIGFPE (8):算术错误(如除以零)。
SIGKILL (9):强制终止信号(不可捕获或忽略)。
SIGUSR1 (10):用户自定义信号 1。
SIGSEGV (11):段错误(无效内存访问)。
SIGUSR2 (12):用户自定义信号 2。
SIGPIPE (13):管道破裂(写入无读端的管道)。
SIGALRM (14):定时器超时(由 alarm() 设置)。
SIGTERM (15):终止请求(可捕获,优雅退出)。
SIGSTKFLT (16):协处理器栈错误(已废弃)。
SIGCHLD (17):子进程状态改变(终止或停止)。
SIGCONT (18):恢复已停止的进程(不可忽略)。
SIGSTOP (19):停止进程的执行(不可捕获或忽略)。
SIGTSTP (20):终端停止请求(如 Ctrl+Z)。
SIGTTIN (21):后台进程尝试读取终端。
SIGTTOU (22):后台进程尝试写入终端。
SIGURG (23):紧急数据(如带外数据到达套接字)。
SIGXCPU (24):CPU 时间超限。
SIGXFSZ (25):文件大小超限。
SIGVTALRM (26):虚拟定时器超时。
SIGPROF (27):性能分析定时器超时。
SIGWINCH (28):终端窗口大小改变。
SIGIO (29):异步 I/O 事件(文件描述符就绪)。
SIGPWR (30):电源故障(UPS 电池低电量)。
SIGSYS (31):无效的系统调用。
实时信号(34-64)
SIGRTMIN 到 SIGRTMAX:实时信号(优先级高于标准信号),编号范围因系统而异(通常 34-64)。
特点:
支持排队(同一信号多次触发不会丢失)。
可通过 sigqueue() 发送附加数据。
常用于高可靠性应用(如实时调度)。

(3)、常用命令示例

text-x-sh 复制代码
root@master:/data# ps -ef | grep test
root       17981   17335  0 12:34 pts/1    00:00:00 sh test.sh
root       17984   17335  0 12:34 pts/1    00:00:00 grep --color=auto test
root@master:/data# kill 17981 #根据进程pid停止程序(不加信号参数,默认是kill -15,等待程序执行完成退出)
root@master:/data# ps -ef | grep test
root       17988   17335  0 12:34 pts/1    00:00:00 grep --color=auto test
root@master:/data# kill -19 17989    #暂停进程
root@master:/data# 

[1]+  Stopped                 nohup sh test.sh
root@master:/data# ps -f | grep 17989
root       17989   17335  0 12:35 pts/1    00:00:00 sh test.sh
root       18024   17989  0 12:38 pts/1    00:00:00 [sleep] <defunct>
root       18035   17335  0 12:39 pts/1    00:00:00 grep --color=auto 17989
root@master:/data# kill -18 17989     #恢复进程
root@master:/data# ps -f | grep 17989
root       17989   17335  0 12:35 pts/1    00:00:00 sh test.sh
root       18036   17989  0 12:39 pts/1    00:00:00 sleep 10
root       18038   17335  0 12:39 pts/1    00:00:00 grep --color=auto 17989
root@master:/data# kill -9 17989 #强制结束进程
root@master:/data# ps -f | grep 17989
root       18048   17335  0 12:40 pts/1    00:00:00 grep --color=auto 17989
[1]+  Killed                  nohup sh test.sh

4、pkill

(1)、命令简介

pkill 是 Linux 系统中用于 通过进程名或其他属性终止进程 的命令,相比 kill(需要手动指定 PID),它可以直接按名称匹配进程并发送信号,更加高效。

(2)、命令选项清单

text-x-sh 复制代码
#命令语法:pkill [选项] <模式>
#模式:可以是进程名、用户、终端等(支持正则表达式)。
#默认信号:SIGTERM(15),类似 kill。
#选项			说明
-<信号>		指定发送的信号(如 -9 强制终止)
-u <用户>	终止指定用户的进程
-f			匹配完整的命令行(而不仅是进程名)
-x			精确匹配进程名(避免误杀)
-n			只终止最新(最新启动)的匹配进程
-o			只终止最旧(最早启动)的匹配进程
-t <终端>	终止指定终端关联的进程

(3)、常用命令示例

text-x-sh 复制代码
root@master:/data# ps -ef | grep nginx #查看nginx进程
root       18811       1  0 12:56 ?        00:00:00 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
www-data   18814   18811  0 12:56 ?        00:00:00 nginx: worker process
www-data   18815   18811  0 12:56 ?        00:00:00 nginx: worker process
root       18953   18072  0 12:57 pts/3    00:00:00 grep --color=auto nginx
root@master:/data# pkill nginx  #根据关键字,杀死名为nginx进程
root@master:/data# ps -ef | grep nginx  
root       18958   18072  0 12:57 pts/3    00:00:00 grep --color=auto nginx
root@master:~# ps -ef  | grep "www-data" #查看www-data用户启动进程
www-data   19104   18963  0 12:59 ?        00:00:00 nginx: worker process
www-data   19105   18963  0 12:59 ?        00:00:00 nginx: worker process
root       19113   19090  0 12:59 pts/1    00:00:00 grep --color=auto www-data
root@master:~# pkill -u www-data -9    #强制杀死www-data用户启动进程   
root@master:~# ps -ef  | grep "www-data" #可以看到www-data用户启动进程被重新拉起
www-data   19115   18963  0 13:00 ?        00:00:00 nginx: worker process
www-data   19116   18963  0 13:00 ?        00:00:00 nginx: worker process
root       19118   19090  0 13:00 pts/1    00:00:00 grep --color=auto www-data
#其他部分场景命令示例:
pkill -x "bash"      # 仅终止进程名严格等于 "bash" 的进程
pkill -f "python3 app.py"  # 终止命令行包含 "python3 app.py" 的进程
pkill -n chrome      # 终止最近启动的 "chrome" 进程
pkill -o mysql       # 终止最早启动的 "mysql" 进程
pkill -t pts/1       # 终止终端 pts/1 上的所有进程

5、bg/fg

(1)、命令简介

bgfg 是 Linux/Unix 系统中用于控制 后台(Background)前台(Foreground) 作业(Jobs)的命令,常用于管理正在运行或暂停的任务。

(2)、命令选项清单

text-x-sh 复制代码
#命令语法:bg [%作业号]  
#命令语法:fg [%作业号]

(3)、常用命令示例

text-x-sh 复制代码
root@master:~# ping 192.168.0.118 
PING 192.168.0.118 (192.168.0.118) 56(84) bytes of data.
64 bytes from 192.168.0.118: icmp_seq=1 ttl=64 time=0.290 ms
64 bytes from 192.168.0.118: icmp_seq=2 ttl=64 time=0.130 ms
^Z  #ctrl+z挂起进程
[1]+  Stopped                 ping 192.168.0.118
root@master:~# jobs #查看当前作业
[1]+  Stopped                 ping 192.168.0.118
root@master:~# bg 1 #恢复编号为1的作业,并在后台运行
[1]+ ping 192.168.0.118 &
root@master:~# 64 bytes from 192.168.0.118: icmp_seq=3 ttl=64 time=0.194 ms
64 bytes from 192.168.0.118: icmp_seq=4 ttl=64 time=0.136 ms
64 bytes from 192.168.0.118: icmp_seq=5 ttl=64 time=0.110 ms
64 bytes from 192.168.0.118: icmp_seq=6 ttl=64 time=0.102 ms
64 bytes from 192.168.0.118: icmp_seq=7 ttl=64 time=0.124 ms
64 bytes from 192.168.0.118: icmp_seq=25 ttl=64 time=0.101 ms
64 bytes from 192.168.0.118: icmp_seq=26 ttl=64 time=0.108 ms
^C #手动执行crtl+c强制终止
root@master:~# 64 bytes from 192.168.0.118: icmp_seq=27 ttl=64 time=0.157 ms #命令继续执行
64 bytes from 192.168.0.118: icmp_seq=28 ttl=64 time=0.145 ms
64 bytes from 192.168.0.118: icmp_seq=29 ttl=64 time=0.103 ms

root@master:~# ping 192.168.0.118
PING 192.168.0.118 (192.168.0.118) 56(84) bytes of data.
64 bytes from 192.168.0.118: icmp_seq=1 ttl=64 time=0.173 ms
64 bytes from 192.168.0.118: icmp_seq=2 ttl=64 time=0.121 ms
^Z #ctrl+z挂起进程
[1]+  Stopped                 ping 192.168.0.118
root@master:~# jobs #查看当前作业
[1]+  Stopped                 ping 192.168.0.118
root@master:~# fg 1 #恢复编号为1的作业,恢复前台运行
ping 192.168.0.118
64 bytes from 192.168.0.118: icmp_seq=3 ttl=64 time=0.140 ms
64 bytes from 192.168.0.118: icmp_seq=4 ttl=64 time=0.102 ms
64 bytes from 192.168.0.118: icmp_seq=5 ttl=64 time=0.142 ms
64 bytes from 192.168.0.118: icmp_seq=6 ttl=64 time=0.147 ms
^C ##手动执行crtl+c强制终止
--- 192.168.0.118 ping statistics ---
6 packets transmitted, 6 received, 0% packet loss, time 14426ms
rtt min/avg/max/mdev = 0.102/0.137/0.173/0.022 ms #命令执行结束
root@master:~#