系统信息及进程管理
一、系统信息查看
常用命令: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)、命令简介
hostnamectl 是 systemd 提供的命令行工具,用于 管理系统主机名和相关系统信息 (如操作系统、内核版本、硬件架构等)。它是现代 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)、命令简介
bg 和 fg 是 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:~#