ubuntu 查看进程的常用命令有什么

目录

​编辑

1.概要

2.内容

1. top 命令

2. htop 命令

3. pgrep 命令

4. pstree 命令

5. kill 和 killall 命令

6. systemctl 命令

7. 其他工具

常用组合示例

3.关联链接

4.关联知识 

1.top 命令详解

1. 启动方式

2. 界面布局

3. 系统状态解析(上半部分)

4. 进程列表字段(下半部分)

5. 常用快捷键

6. 高级用法示例

7. 注意事项

2.htop 命令 详解 

1. 安装

2. 启动方式

3. 界面布局

4. 系统状态解析(上半部分)

5. 进程列表字段

6. 核心功能快捷键

7. 高级功能

8. 使用场景示例

9. 对比 top 的优势

3.pgrep 命令详解 

1. 基本语法

2. 常用选项

3. 使用示例

基础用法

按用户过滤

精确匹配

统计进程数

结合 pkill 使用

4. 与 pidof 的区别

5. 高级场景

查找子进程

按进程组过滤

按终端过滤

6. 典型用途

7. 注意事项

4.kill命令详解 

1. 基本语法

2. 常用信号

3. 常用选项

4. 使用示例

终止进程

批量终止进程

结合 pgrep 使用

检查进程是否存在

5. 注意事项

6. 相关命令

7. 典型用途

8. 信号列表查看

5.killall 命令详解 

1. 命令概述

2. 基本语法

3. 常用信号

4. 常用选项

5. 使用示例

终止所有同名进程

精确匹配进程名

结合正则表达式

查看详细信息

按用户过滤

6. 注意事项

7. 与 pkill 的区别

8. 典型用途

9. 安全建议

7.systemctl 命令详解 

1. 基本语法

2. 常用命令

3. 常用选项

4. 使用示例

管理单个服务

查看服务状态

启用/禁用开机自启

查看所有服务

重新加载配置

调试服务

5. 高级用法

设置服务依赖

修改服务环境变量

强制操作

6. 注意事项

7. 相关命令

8. 典型场景


1.概要

2.内容

在 Ubuntu 系统中,除了 ps 命令外,还有许多其他工具可用于查看和管理进程。以下是常用的命令及其使用场景:


1. top 命令

用途:实时动态查看系统进程和资源占用情况(类似 Windows 的任务管理器)。

top
  • 常用操作
    • 按 P:按 CPU 使用率排序。
    • 按 M:按内存使用率排序。
    • 按 k:终止指定 PID 的进程。
    • 按 q:退出。

2. htop 命令

用途:增强版 top,支持鼠标操作和更友好的界面。

sudo apt install htop # 如果未安装,先执行安装
htop
  • 常用操作
    • 鼠标左键点击表头排序。
    • 按 F2:进入设置,可自定义显示字段。
    • 按 F9:发送信号(如 SIGKILL 强制终止)。

3. pgrep 命令

用途:根据进程名直接查找进程 PID。

pgrep nginx # 查找所有名为 "nginx" 的进程 PID
pgrep -u root # 查找 root 用户的所有进程 PID
pgrep -x "python3" # 精确匹配完整命令名

4. pstree 命令

用途:以树状结构显示进程关系。

pstree # 显示所有进程的树状结构
pstree -p # 显示 PID
pstree -u # 显示进程所有者

5. kill 和 killall 命令

用途:终止进程。

kill -9 1234 # 通过 PID 强制终止进程
killall -9 nginx # 通过进程名强制终止所有 "nginx" 进程
  • 常用信号
    • -9 或 -SIGKILL:强制终止。
    • -15 或 -SIGTERM:默认终止信号(允许进程清理)。

6. systemctl 命令

用途:管理系统服务进程(如 nginxmysql)。

systemctl status nginx # 查看服务状态
systemctl start nginx # 启动服务
systemctl stop nginx # 停止服务
systemctl restart nginx # 重启服务

7. 其他工具

  • vmstat:查看系统整体资源使用情况(CPU、内存、I/O 等)。
  • iostat:监控磁盘 I/O 性能。
  • nmon:综合性能监控工具(需安装)。

常用组合示例

  1. 查找并终止进程

    pgrep nginx | xargs kill -9 # 强制终止所有 nginx 进程
  2. 监控高 CPU 占用进程

    top -b -n 1 | head -n 17 # 静态查看 top 结果
    htop --sort-key PERCENT_CPU # 按 CPU 排序
  3. 分析进程树

    pstree -p | grep -A 3 nginx # 查看 nginx 进程的子进程

根据需求选择合适的工具:ps 适合静态查看,top/htop 适合动态监控,pgrep/kill 适合快速操作进程。

3.关联链接

4.关联知识 

1.top 命令详解

top 是 Linux 系统中一个强大的实时系统监控工具,用于动态查看系统的进程和资源使用情况(如 CPU、内存、负载等)。以下是其详细解析:


1. 启动方式

  • 基本命令
    top
  • 常用选项

    top -d 1 # 每1秒刷新一次(默认3秒)
    top -u username # 显示特定用户的进程
    top -p PID # 监控指定PID的进程
    top -n 5 # 刷新5次后退出
    top -b # 批处理模式(输出到文件或管道)

2. 界面布局

启动后分为上下两部分:

  • 上半部分:系统整体状态(每行含义见下文)。
  • 下半部分:进程列表(按 CPU 或内存排序)。

3. 系统状态解析(上半部分)

行号字段说明
1top - 时间系统运行时间(up 后为启动时间,如 1 day
2load average系统平均负载(1/5/15分钟的平均进程数,需结合CPU核数判断是否正常)
3Tasks总进程数(运行、休眠、停止、僵尸进程数)
4Cpu(s)CPU使用率(用户空间、系统空间、空闲、等待I/O、硬件中断等)
5Mem物理内存总量、已用、空闲、缓存(buff/cache
6Swap交换分区(虚拟内存)的使用情况

4. 进程列表字段(下半部分)

列名说明
PID进程ID
USER进程所有者
PR优先级(Priority)
NINice值(优先级调整值,范围-20~19)
VIRT虚拟内存总量(KB)
RES实际使用的物理内存(KB)
SHR共享内存大小(KB)
S进程状态(R=运行, S=睡眠, Z=僵尸, D=不可中断睡眠等)
%CPUCPU占用百分比
%MEM内存占用百分比
TIME+进程使用的总CPU时间(格式:分:秒.毫秒)
COMMAND启动进程的命令(可能截断,按 c 可显示完整路径)

5. 常用快捷键

按键功能
P按 CPU 使用率排序
M按内存使用率排序
T按运行时间排序
k终止指定 PID 的进程(需输入信号,默认15为SIGTERM)
r调整进程优先级(Nice值)
h显示帮助文档
q退出 top
1展开多核CPU的详细使用率
f进入字段管理界面(可自定义显示的列)
F按特定列排序(需配合字段选择)
z切换颜色高亮模式
c切换命令的完整显示(避免截断)

6. 高级用法示例

  • 保存输出到文件
    top -b -n 1 > system_status.txt
  • 监控特定用户进程
    top -u mysql
  • 按内存排序并刷新5次
    top -o %MEM -n 5

7. 注意事项

  1. 负载(Load Average)
    • 单核CPU:1.0 表示满负荷。
    • 多核CPU:需乘以核数(如4核CPU,4.0为满负荷)。
  2. 僵尸进程(Z状态)
    • 已终止但未释放资源的进程,通常由父进程未正确处理导致。
  3. 优先级调整
    • 普通用户只能降低优先级(增加Nice值),root可任意调整。

通过 top,用户可以快速定位资源占用高的进程,分析系统瓶颈,是系统管理和调试的必备工具。

2.htop 命令 详解 

htop 是 top 的增强版工具,提供更直观的交互式界面、颜色高亮、鼠标操作支持等功能,适合实时监控 Linux 系统资源。以下是其详解:


1. 安装

  • Debian/Ubuntu
    sudo apt install htop
  • RHEL/CentOS
    sudo yum install htop
  • Fedora
    sudo dnf install htop

2. 启动方式

htop # 直接启动
htop -d 2 # 每2秒刷新一次
htop -u user # 显示特定用户的进程
htop -p PID # 监控指定PID的进程

3. 界面布局

  • 上半部分:系统资源概览(CPU、内存、负载等)。
  • 下半部分:进程列表(支持垂直/水平滚动)。
  • 顶部菜单栏:F1~F10 提供快捷操作。

4. 系统状态解析(上半部分)

  • CPU
    • 多核状态以条形图显示,颜色区分使用率(红高绿低)。
    • 支持按 1 展开详细单核状态。
  • 内存
    • 物理内存和交换分区的使用情况,颜色区分(黄/红表示紧张)。
  • 负载
    • 与 top 类似,但颜色高亮(红/黄/绿)。

5. 进程列表字段

与 top 类似,但支持更多列和颜色:

  • PID:进程ID(绿色为运行中)。
  • USER:进程所有者。
  • PRI/NI:优先级和Nice值。
  • VIRT/RES/SHR:虚拟内存、物理内存、共享内存。
  • CPU%:CPU占用率(红色高亮高负载)。
  • MEM%:内存占用率。
  • TIME+:累计CPU时间。
  • Command:进程命令(支持鼠标悬停显示完整路径)。

6. 核心功能快捷键

按键功能
F1查看帮助文档
F2进入设置菜单(调整颜色、列、刷新频率等)
F3搜索进程(支持正则表达式)
F4按过滤器筛选进程(如仅显示特定用户或命令)
F5树状视图(显示进程父子关系)
F6按列排序(默认按CPU%,可切换内存、PID等)
F7降低进程优先级(Nice值+1)
F8提高进程优先级(Nice值-1)
F9终止进程(发送SIGTERM信号,可自定义信号)
F10退出 htop
Space快速滚动页面
鼠标滚轮垂直滚动进程列表
Shift+鼠标滚轮水平滚动列

7. 高级功能

  • 颜色主题
    • 通过 F2 → Colors 自定义颜色方案(如高亮高负载进程)。
  • 列自定义
    • 通过 F2 → Columns 调整显示的列及其顺序。
  • 快捷键绑定
    • 通过 F2 → Keys 修改快捷键(如将 k 设为终止进程)。
  • 进程跟踪
    • 右键进程 → Track this process 持续监控(类似 strace)。

8. 使用场景示例

  1. 快速定位高负载进程
    • 按 P(CPU%)或 M(内存%)排序,红色进程需关注。
  2. 终止僵尸进程
    • 搜索 Z 状态进程,按 F9 发送信号。
  3. 分析进程树
    • 按 F5 查看父子进程,帮助理解服务依赖。
  4. 资源监控脚本
    htop -b -n 1 > system_status.txt # 批处理模式输出到文件

9. 对比 top 的优势

特性htoptop
界面交互支持鼠标、快捷键、滚动仅键盘操作,无滚动
颜色高亮默认启用,可自定义
树状视图F5 快速切换需第三方工具(如 pstree
列自定义动态调整列和顺序需启动前配置
进程管理一键终止、优先级调整需手动输入命令

通过 htop,用户可以更高效地监控系统资源,快速响应性能问题,是 Linux 系统管理的推荐工具。

3.pgrep 命令详解 

pgrep 是 Linux 中用于根据进程名或其他属性快速查找进程 PID(Process ID)的命令,常用于脚本或命令行中动态管理进程。以下是其详解:


1. 基本语法

pgrep [选项] <进程名或模式>

2. 常用选项

选项说明
-l显示进程名和PID(默认仅显示PID)
-f匹配完整的命令行(而不仅是进程名)
-u <用户>仅匹配指定用户的进程
-x精确匹配进程名(避免部分匹配)
-n选择最新的进程(按启动时间)
-o选择最旧的进程(按启动时间)
-c统计匹配进程的数量(不输出PID)
-P <PID>查找指定父进程的子进程
-g <PGRP>匹配指定进程组的进程
-t <终端>匹配指定终端关联的进程

3. 使用示例

基础用法

pgrep nginx # 查找所有名为 "nginx" 的进程PID
pgrep -l ssh # 显示进程名和PID(如 "sshd 1234")
pgrep -f "python app.py" # 查找完整命令行包含 "python app.py" 的进程
按用户过滤

pgrep -u root # 查找所有属于 root 用户的进程
pgrep -u alice -f "chrome" # 查找 alice 用户运行的包含 "chrome" 的进程
精确匹配

pgrep -x "nginx" # 仅匹配进程名完全等于 "nginx" 的进程(排除 "nginx-worker" 等)
统计进程数

pgrep -c sshd # 输出 sshd 进程的数量(如 "3")
结合 pkill 使用

pgrep -f "node app.js" | xargs kill # 查找并终止所有运行 "node app.js" 的进程
pkill -9 -f "zombie-process" # 直接强制终止匹配进程(无需先查PID)

4. 与 pidof 的区别

  • pgrep
    • 支持更多匹配条件(如用户、命令行、进程组等)。
    • 默认输出PID,可结合 -l 显示进程名。
    • 支持正则表达式匹配(如 pgrep -f "^python")。
  • pidof
    • 仅通过进程名直接匹配,语法更简单。
    • 直接返回PID列表(如 pidof sshd)。

5. 高级场景

查找子进程
pgrep -P 1234 # 查找父进程PID为1234的所有子进程
按进程组过滤
pgrep -g 5678 # 查找属于进程组5678的进程
按终端过滤
pgrep -t pts/0 # 查找关联到终端 pts/0 的进程

6. 典型用途

  1. 脚本中动态获取PID

    # 重启所有Java服务
    pkill -HUP java
  2. 批量管理进程

    # 终止所有Python脚本
    pkill -9 python
  3. 监控进程状态
    while true; do pgrep -c my_script; sleep 1; done # 每秒检查进程是否存在

7. 注意事项

  • 若未找到匹配进程,pgrep 默认返回空(可通过 set -e 在脚本中捕获错误)。
  • 使用 -f 时注意引号包裹模式(如 pgrep -f "exact command line")。
  • 部分选项(如 -P)可能需要较新版本的 pgrep 支持。

通过灵活组合选项,pgrep 能高效替代 ps | grep 的传统用法,是系统管理和脚本编写的实用工具。

4.kill命令详解 

kill 是 Linux 中用于向进程发送信号的命令,常用于终止或管理进程。以下是其详解:


1. 基本语法

kill [选项] <PID> [信号]

2. 常用信号

信号名信号值说明
SIGTERM15终止进程(默认信号,可被捕获或忽略)
SIGKILL9强制终止进程(不可被捕获或忽略)
SIGHUP1挂起进程(常用于重启服务)
SIGINT2中断进程(如 Ctrl+C)
SIGSTOP19暂停进程(不可被捕获或忽略)
SIGCONT18继续执行暂停的进程

3. 常用选项

选项说明
-l列出所有支持的信号名称及其值
-s <信号> 或 -SIG <信号>指定发送的信号(如 -9 或 -SIGKILL
-0检查进程是否存在(不发送信号,返回状态码)
-n仅向进程组中的第一个进程发送信号(需配合 -PID

4. 使用示例

终止进程

kill 1234 # 向 PID 1234 发送 SIGTERM(默认)
kill -9 1234 # 强制终止 PID 1234(SIGKILL)
kill -HUP 5678 # 向 PID 5678 发送 SIGHUP(如重启服务)
批量终止进程

kill 1234 5678 9012 # 同时向多个 PID 发送 SIGTERM
kill -9 $(pgrep nginx) # 强制终止所有名为 "nginx" 的进程
结合 pgrep 使用
pgrep -f "python script.py" | xargs kill # 查找并终止所有匹配的进程
检查进程是否存在
kill -0 1234 && echo "进程存在" || echo "进程不存在"

5. 注意事项

  1. 信号优先级
    • SIGKILL(9)和 SIGSTOP(19)不可被进程捕获或忽略,直接由内核处理。
    • SIGTERM(15)是默认的终止信号,允许进程进行清理操作。
  2. 权限限制
    • 普通用户只能向自己的进程发送信号,需 sudo 才能操作其他用户的进程。
  3. 进程名匹配
    • kill 仅接受 PID,若需通过进程名终止,需结合 pgrep 或 pkill

6. 相关命令

  • pkill:直接通过进程名发送信号(如 pkill -9 nginx)。
  • killall:向所有同名进程发送信号(如 killall -HUP sshd)。
  • top/htop:实时监控进程并发送信号(需交互操作)。

7. 典型用途

  1. 终止无响应进程
    kill -9 $(pgrep frozen_app) # 强制终止无响应的应用
  2. 服务重启
    kill -HUP $(cat /var/run/nginx.pid) # 平滑重启 Nginx
  3. 脚本中进程管理

    # 等待进程结束后再继续执行
    kill 1234 && wait 1234

8. 信号列表查看

kill -l # 列出所有信号名称(如 "SIGHUP", "SIGINT" 等)
kill -l 9 # 查看信号值 9 对应的名称(SIGKILL)

通过灵活使用信号和选项,kill 是管理系统进程的核心工具之一。

5.killall 命令详解 

killall 是 Linux 中用于通过进程名批量发送信号的命令,适合管理多个同名进程。以下是其详解:


1. 命令概述

  • 功能:向所有匹配进程名的进程发送指定信号。
  • 适用场景:批量终止同名进程(如所有 nginx 实例)、服务重启等。
  • 默认信号SIGTERM(15,终止进程,允许清理)。

2. 基本语法

killall [选项] <进程名> [信号]

3. 常用信号

信号名信号值说明
SIGTERM15终止进程(默认,可被捕获或忽略)
SIGKILL9强制终止进程(不可被捕获或忽略)
SIGHUP1挂起进程(常用于重启服务)
SIGINT2中断进程(如 Ctrl+C)
SIGSTOP19暂停进程(不可被捕获或忽略)
SIGCONT18继续执行暂停的进程

4. 常用选项

选项说明
-e要求进程名完全匹配(避免子字符串误杀)
-I忽略进程名大小写
-v显示详细信息(如被发送信号的进程)
-Z <上下文>仅杀死拥有特定安全上下文的进程(如 SELinux 策略)
-r使用正则表达式匹配进程名
-s <信号> 或 -SIG <信号>指定发送的信号(如 -9 或 -SIGKILL

5. 使用示例

终止所有同名进程

killall nginx # 向所有 nginx 进程发送 SIGTERM
killall -9 python # 强制终止所有 Python 进程
killall -HUP sshd # 向所有 sshd 进程发送 SIGHUP(重启服务)
精确匹配进程名

killall -e "nginx: master" # 仅终止进程名完全匹配 "nginx: master" 的进程
结合正则表达式
killall -r "nginx.*worker" # 终止所有进程名匹配 "nginx.*worker" 的进程
查看详细信息
killall -v -HUP httpd # 显示向所有 httpd 进程发送 SIGHUP 的详细信息
按用户过滤
killall -u root sshd # 终止所有属于 root 用户的 sshd 进程(需结合其他工具如 `pgrep`)

6. 注意事项

  1. 权限限制
    • 普通用户只能终止自己的进程,需 sudo 才能操作其他用户的进程。
  2. 进程名匹配
    • 默认支持子字符串匹配(如 killall http 可能影响 httpd)。
    • 使用 -e 确保完全匹配,避免误杀。
  3. 强制终止风险
    • SIGKILL-9)会立即终止进程,可能导致未保存的数据丢失。
  4. 僵尸进程无效
    • killall 对僵尸进程(状态为 Z)无效,需终止其父进程。

7. 与 pkill 的区别

命令特点
killall通过进程名直接匹配,支持简单模式
pkill支持更复杂的匹配(如用户、终端、资源占用)

8. 典型用途

  1. 批量管理服务
    killall -HUP nginx # 平滑重启所有 Nginx 进程
  2. 脚本自动化
    killall -9 "temp_script.sh" # 强制终止所有临时脚本
  3. 清理后台任务
    killall -INT "data_processor" # 向所有数据处理进程发送 SIGINT(模拟 Ctrl+C)

9. 安全建议

  • 先验证进程

    pgrep nginx # 查看匹配的 PID 列表
    killall -v nginx # 确认后再执行
  • 谨慎使用 -9
    优先尝试 SIGTERM,无效时再强制终止。

通过灵活使用 killall,可以高效管理系统中同名的多个进程,提升运维效率。

7.systemctl 命令详解 

systemctl 是 Linux 系统中用于管理系统和服务(由 systemd 管理)的核心命令。它支持服务的启动、停止、重启、状态查看、依赖管理、日志追踪等操作。以下是其详解:


1. 基本语法

systemctl [选项] <命令> <服务名>.service

2. 常用命令

命令说明
start启动服务
stop停止服务
restart重启服务(先停止后启动)
reload重新加载服务配置(不重启)
status查看服务状态
enable启用开机自启
disable禁用开机自启
is-enabled检查服务是否启用开机自启
is-active检查服务是否正在运行
list-units列出所有已加载的服务和单元
list-unit-files列出所有已安装的服务文件(含状态)
daemon-reload重新加载 systemd 配置文件(修改服务文件后需执行)
mask彻底禁用服务(链接到 /dev/null
unmask取消 mask 的禁用状态
cat查看服务单元文件内容
show查看服务的详细属性和状态
reset-failed重置服务的失败状态

3. 常用选项

选项说明
-l 或 --full不省略状态信息(如完整输出)
-a 或 --all显示所有服务(包括非活动状态)
-t <类型>按类型过滤(如 servicesocket
--now执行命令后立即操作(如 enable --now 启动并启用)
--force强制操作(如覆盖冲突文件)
-n <行数>显示日志行数(结合 status 使用)
-f跟踪日志输出(实时查看)

4. 使用示例

管理单个服务

sudo systemctl start nginx # 启动 Nginx
sudo systemctl restart mysql # 重启 MySQL
sudo systemctl stop apache2 # 停止 Apache
sudo systemctl reload sshd # 重载 SSH 配置(不中断服务)
查看服务状态

systemctl status docker # 查看 Docker 状态
systemctl is-active nginx # 检查 Nginx 是否运行(返回 "active" 或 "inactive")
systemctl is-enabled firewalld # 检查防火墙是否开机自启
启用/禁用开机自启

sudo systemctl enable docker # 启用 Docker 开机自启
sudo systemctl disable postfix # 禁用 Postfix 开机自启
查看所有服务

systemctl list-units --type=service # 列出所有服务单元
systemctl list-unit-files --state=enabled # 列出已启用的服务
重新加载配置

sudo systemctl daemon-reload # 修改服务文件后需执行
sudo systemctl restart my_service # 重新加载后重启服务
调试服务

journalctl -u nginx -n 50 --no-pager # 查看 Nginx 最近 50 行日志
systemctl show nginx | grep ExecStart # 查看服务的启动命令

5. 高级用法

设置服务依赖

在单元文件(如 my_service.service)中指定依赖:

[Unit]
Requires=network-online.target # 依赖网络就绪
After=network-online.target # 在网络就绪后启动
修改服务环境变量

在单元文件中添加:

[Service]
Environment="KEY=value"
强制操作
sudo systemctl restart --force nginx # 强制重启(即使进程未响应)

6. 注意事项

  1. 权限要求
    • 修改系统服务通常需要 sudo 权限。
  2. 服务文件位置
    • 用户级服务:~/.config/systemd/user/
    • 系统级服务:/etc/systemd/system/ 或 /usr/lib/systemd/system/
  3. 依赖管理
    • 使用 Requires 和 After 确保服务启动顺序。
  4. 日志查看
    • 结合 journalctl 分析服务问题(如 journalctl -xe 查看启动错误)。
  5. 兼容性
    • systemctl 是 systemd 的工具,不适用于 SysV init 或 Upstart 系统。

7. 相关命令

  • journalctl:查看 systemd 日志(如 journalctl -u nginx -f 实时跟踪日志)。
  • systemd-analyze:分析系统启动时间和服务依赖。
  • hostnamectl:管理主机名和主机信息。
  • timedatectl:管理时间和时区。

8. 典型场景

  1. 部署新服务

    sudo cp my_service.service /etc/systemd/system/
    sudo systemctl daemon-reload
    sudo systemctl start my_service
    sudo systemctl enable my_service
  2. 排查启动失败

    systemctl status my_service # 查看错误摘要
    journalctl -u my_service -b # 查看本次启动的完整日志
  3. 临时禁用服务

    sudo systemctl stop my_service
    sudo systemctl mask my_service # 彻底禁用(创建符号链接到 /dev/null)

通过灵活使用 systemctl,可以高效管理 Linux 系统的服务和资源。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值