在ubuntu中查询与某脚本或某设备相关的进程,ps,pgrep,lsof,fuser,pstree,htop命令的使用指南

一、查询与脚本有关的进程

1. 用ps命令

在 Ubuntu 系统中,如果你想查询与特定 Python 脚本 abc.py 相关的线程,你可以使用 ps 命令和 grep 命令结合来查找。ps 命令用于显示当前运行的进程状态,而 grep 命令可以帮助你过滤出包含指定字符串的行。

步骤

打开终端。
输入以下命令来查询包含 abc.py 的进程:

ps aux | grep abc.py

这条命令的解释如下:
ps auxps 是显示进程的命令,a 表示显示所有用户的进程,u 表示以用户易读的格式输出,x 表示显示没有控制终端的进程。
grep abc.pygrep 是搜索字符串的命令,这里用来搜索所有包含 abc.py 的行。

输出解释

输出将会列出所有包含 abc.py 的进程。你将看到类似下面的信息:

username   12345  0.0  0.1  63948  1324 pts/1    S+   12:00   0:00 python3 abc.py

这里:
username 是运行该进程的用户。
12345 是进程 ID(PID)。
最后的 python3 abc.py 显示了启动该进程的命令。

高级用法

如果你想要更详细的线程信息,可以使用 pstree 命令,它可以显示进程的树形结构。首先,使用 ps aux | grep abc.py 命令找到进程的 PID,然后使用该 PID 运行 pstree

pstree -p <PID>

替换 `` 为你从第一个命令中得到的进程 ID。

这将显示该进程及其子进程的详细树状结构,包括线程信息。

确保在操作时具有适当的权限,特别是在多用户环境中。如果需要,你可能要使用 sudo 来获取更高级的权限。

2.用pgrep命令

pgrep 是一个在 Unix 和类 Unix 操作系统中用于搜索与给定条件匹配的进程的命令。它从系统的进程表中查找进程,通常用于获取进程的进程ID(PID)。以下是 pgrep 命令的一些常见用法和选项:

基本用法

搜索进程名:
pgrep process_name
这条命令会搜索所有名为 process_name 的进程,并返回它们的 PID。

选项

-f:

pgrep -f pattern

允许你搜索整个命令行,而不仅仅是进程名。这对于搜索由特定脚本或命令启动的进程非常有用。
-l:

pgrep -l process_name

不仅返回 PID,还会显示进程名,有助于确认进程的详细信息。
-u:

pgrep -u username

只返回由指定用户(username)运行的进程的 PID。
-U:

pgrep -U uid

只返回由指定用户ID(uid)运行的进程的 PID。
-v:

pgrep -v -u username

返回不是由指定用户运行的所有进程的 PID。
-n:

pgrep -n process_name

返回最新启动的与指定名称匹配的进程的 PID。
-o:

pgrep -o process_name

返回最早启动的与指定名称匹配的进程的 PID。
-x:

pgrep -x process_name

精确匹配进程名。
-P:

pgrep -P ppid

返回指定父进程ID(ppid)的子进程的 PID。

示例

查找所有 Python 进程:

pgrep python

精确查找名为 abc.py 的脚本:

pgrep -f '^python abc.py$'

查找特定用户运行的所有进程:

pgrep -u username

查找并显示所有 SSH 进程的名称和 PID:

pgrep -l sshd

总结

pgrep 是一个强大的命令,用于快速定位和识别系统中运行的进程。它特别适合用在脚本中,因为它直接输出 PID,可以很方便地用于进程管理和监控。在系统管理和自动化任务中,pgrep 是一个非常有用的工具。

ps命令和pgrep命令对比

pgrep -f abc.pyps aux | grep abc.py 都是用来查找名为 abc.py 的进程,但它们在用法和输出上有一些关键的区别:

pgrep -f abc.py

命令简介:
pgrep 是一个查找进程的命令。
-f 选项使 pgrep 在整个命令行中搜索匹配的模式,而不仅仅是进程名。
输出:
默认情况下,pgrep 只输出匹配进程的进程ID(PID)。
它不显示进程的其他详细信息如用户、CPU使用率等。
优点:
输出简洁,只包含 PID,易于在脚本中进一步处理。
相对于 ps 命令,pgrep 在某些情况下可能更快,因为它直接从内核的进程表中搜索,而不需要格式化输出。

ps aux | grep abc.py

命令简介:
ps aux 是一个显示当前运行的所有进程的详细信息的命令。
grep abc.py 是用来从 ps 的输出中筛选包含 abc.py 的行。
输出:
输出包括了进程的详细信息,如用户、CPU使用、内存使用、启动时间、命令行等。
grep 本身不会过滤掉包含 grep abc.py 命令的行,因此通常会看到两条相关的行:一条是实际的 abc.py 进程,另一条是当前的 grep 命令。
优点:
提供了进程的详细信息,可以直接在命令行中查看,不需要其他工具或命令。
更灵活,可以通过修改 psgrep 的参数来改变输出的内容和格式。

使用上的选择

如果你只需要快速获取进程ID,或者需要在脚本中处理进程ID,使用 pgrep 通常更为简洁高效。
如果你需要查看进程的详细信息,或者需要手动检查进程状态,使用 ps aux | grep 可能更合适。
这两个命令的选择取决于你的具体需求和喜好。

二、查询与某设备如摄像头相关的进程

1. 用lsof命令

lsof(List Open Files)是一个在Unix和类Unix操作系统中非常强大的命令行工具,用于显示有关系统中当前打开的文件的信息。这些“文件”可以是普通文件、目录、共享库、设备(如音频设备和磁盘分区)、网络文件(如套接字、管道)等。

主要功能

查看哪些进程打开了哪些文件:这可以帮助你找到哪个进程正在使用特定的文件或设备,例如找出哪个进程占用了挂载点或USB设备。
查看哪些文件被特定进程打开:这对于调试和系统监控非常有用。
确定哪些进程正在监听哪些端口:通过查看网络连接,你可以看到哪些进程正在使用哪些端口。

语法

基本语法为:

lsof [options] [names]

选项

-u 用户名或UID:列出指定用户打开的文件。

lsof -u username

+D 目录:列出指定目录下所有打开的文件。

lsof +D /path/to/directory

-i:列出所有网络连接。

lsof -i

-i [协议]@[IP地址]:[端口号]:筛选特定的网络连接。

lsof -i TCP@192.168.1.1:80

-p PID:列出由特定进程ID打开的文件。

lsof -p 1234

-t:仅输出进程ID,通常与管道和其他命令结合使用。

lsof -t -i :80

-c:列出指定命令的进程打开的文件。

lsof -c ssh

常见用例

找出哪个进程占用了特定端口:

lsof -i :80

这将列出所有使用端口 80 的进程的详细信息。
查看特定用户打开的文件:

lsof -u username

这可以帮助系统管理员了解特定用户的活动。
查找所有打开特定文件的进程:

lsof /path/to/file

如查询某个占用摄像头的相关进程lsof /dev/video0,或查看所有摄像头的相关进程lsof /dev/video*

如果你想知道哪个进程正在使用某个文件,这非常有用。
监控特定目录下的文件使用情况:

lsof +D /path/to/directory

这对于检查特定目录的文件活动非常有帮助,例如,查看日志文件或临时文件的使用情况。

总结

lsof 是一个非常强大的工具,对系统管理员和开发者来说非常有价值。它不仅帮助识别和解决文件使用冲突,还可以用于安全审计和网络监控。掌握 lsof 的使用可以大大增强对Linux系统的理解和控制。

2. 用fuser命令

fuser 是一个在 Unix 和类 Unix 操作系统中非常有用的命令行工具,用于识别哪些进程正在使用特定的文件、文件系统或套接字。这可以帮助管理员或开发者解决资源争用问题,比如无法卸载文件系统或无法释放某个端口等情况。

基础用法

fuser 的基本语法如下:

fuser [options] [file|directory|socket]

file|directory|socket 指定要检查的文件、目录或网络套接字。

选项

-m:
显示使用同一挂载点的所有文件的进程。
例如,查看挂载点 /mnt 上所有文件的使用情况:

fuser -m /mnt

-v:
详细模式,显示关于每个进程的更多信息,比如用户、访问类型(读、写)、命令名等。
例如:

fuser -v /path/to/file

-u:
在输出中包含每个进程的用户名。
例如:

fuser -u /path/to/file

-k:
杀死访问指定文件或资源的所有进程。
例如,杀死正在使用 /path/to/file 的所有进程:

fuser -k /path/to/file

-i:
交互模式,在杀死进程之前请求确认。
例如:

fuser -ki /path/to/file

-n space:
指定要搜索的名称空间(例如 fileudptcp 等)。
例如,查找使用 TCP 端口 80 的进程:

fuser -n tcp 80

实际用例

查找使用特定文件的所有进程:

fuser /path/to/file

查找某个端口的使用者:
如果你想知道哪个进程正在监听或使用网络端口 8080,可以使用:

fuser -n tcp 8080

释放被进程占用的挂载点:
在无法卸载文件系统时,可能是因为某些进程还在使用该挂载点。你可以查找并终止这些进程:

fuser -km /mounted/point

详细输出模式:
如果你需要更详细的信息(比如用户 ID 和进程所执行的命令),可以使用:

fuser -vu /path/to/file

总结

fuser 是一个非常强大的工具,它提供了一种快速确定文件、目录或端口被哪些进程使用的方法。在系统管理、资源监控和故障诊断中,fuser 都是一个非常有价值的工具。正确使用这个命令可以帮助解决很多关于资源占用的问题。

三、查看进程的树形结构的命令

1.用pstree命令

pstree 是一个在 Unix 和类 Unix 操作系统中用于显示正在运行的进程的树形结构的命令行工具。这个工具可以帮助用户和系统管理员可视化进程之间的父子关系,从而更好地理解进程的创建和管理。这对于调试和系统监控尤其有用。

基本用法

基本的 pstree 命令非常简单:

pstree

这将输出当前系统中所有进程的树状图,其中每个进程都是其父进程的子节点。

选项

pstree 命令提供了几个选项来调整输出的内容和格式:
-p:
显示进程的 PID(进程ID)。这有助于精确识别每个进程。
例如:

pstree -p

-u:
在进程名旁边显示进程的所有者(用户名)。
例如:

pstree -u

-n:
根据 PID 对进程进行数值排序,而不是默认的按名字排序。
例如:

pstree -n

-a:
显示进程的完整命令行参数,这有助于更好地理解进程正在执行的具体任务。
例如:

pstree -a

-c:
展开重复的子树。默认情况下,pstree 会合并显示相同的子进程树,使用此选项可以使每个实例都单独显示。
例如:

pstree -c

-h 或 --highlight-all:
高亮显示当前进程及其祖先。
例如:

pstree -h

-l:
长行模式,不将长行截断为屏幕宽度。
例如:

pstree -l

实际用例

查看特定用户的进程树:
你可以使用 psgrep 配合 pstree 来查看特定用户的进程树,例如:

pstree -p $(ps -u username -o pid=)

理解服务的进程结构:
查看像 Apache 或 Nginx 这样的服务的进程树可以帮助理解其工作方式和子进程的创建:

pstree -p $(pgrep apache)

调试父子进程关系:
当开发多进程应用时,了解进程之间的父子关系对调试很有帮助:

pstree -p

总结

pstree 是一种非常直观的工具,用于展示系统中进程的层级关系。它的多种选项可以帮助详细查看进程的属性,如 PID 和命令行参数,这对于系统管理和问题诊断非常有用。掌握 pstree 可以帮助更好地理解和监控系统中进程的行为和状态。

2. 用htop命令(top的增强版)在这里插入图片描述

htop 是一个交互式的进程查看器,是传统 top 命令的增强版。它提供了一个彩色的文本界面,用于显示关于系统的运行进程的详细信息,包括内存和 CPU 使用率。htop 允许用户以更直观的方式进行系统监控,并提供了丰富的功能,如进程树视图、进程搜索、排序和更多的交互操作。

安装 htop

在大多数 Linux 发行版中,htop 可能不是默认安装的。你可以通过包管理器来安装它:
在 Debian/Ubuntu 上:

sudo apt install htop

在 CentOS/RHEL 上:

sudo yum install htop

在 Fedora 上:

sudo dnf install htop

在 macOS 上,使用 Homebrew:

brew install htop

使用 htop

启动 htop 只需在终端中输入:

htop

主要特性

颜色高亮显示:不同的颜色帮助区分进程的状态、内存使用等。
交互式界面:使用键盘操作进行进程管理,如杀死、优先级调整等。
可配置:用户可以选择哪些信息列出现在界面上。
进程树视图:按 F5 切换到树形显示方式,查看进程的父子关系。
搜索进程:按 F3/ 输入搜索关键字快速定位进程。
排序支持:可以按 CPU、内存、用户等多种方式排序。
鼠标支持:可以使用鼠标进行操作,如选择、排序等。

常用快捷键

F1 或 h:显示帮助
F2 或 S:进入设置菜单
F3 或 /:搜索进程
F4 或 I:逆过滤进程
F5 或 t:切换树形视图
F6 或 >:选择排序方式
F7 和 F8:调整所选进程的优先级(nice值)
F9 或 k:杀死所选进程
F10 或 q:退出 htop

配置和定制

htop 允许用户通过交互式设置菜单(F2)来定制界面和功能。你可以选择显示的列、调整颜色主题、更改行为和更新频率等。

总结

htop 是一个功能强大且用户友好的工具,适用于需要详细监控和管理系统进程的场景。它的交互式操作和丰富的显示选项使其成为 Linux 系统管理员和高级用户的首选工具之一。通过 htop,用户可以更直观地查看和控制系统资源的使用,提高系统管理的效率和便捷性。

  • 17
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值