在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,用户可以更直观地查看和控制系统资源的使用,提高系统管理的效率和便捷性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/639862.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

(六)DockerCompose安装与配置

DockerCompose简介 Compose 项目是 Docker 官方的开源项目&#xff0c;负责实现对 Docker 容器集群的快速编排。使用前面介绍的Dockerfile我们很容易定义一个单独的应用容器。然而在日常开发工作中&#xff0c;经常会碰到需要多个容器相互配合来完成某项任务的情况。例如要实现…

Docker Desktop安装和如何在WSL2中使用Docker

最近在使用WSL的过程中&#xff0c;想使用docker遇到了一些问题&#xff0c;在WSL中安装Linux版本的docker&#xff0c;启动镜像之后不能从Windows机器的端口映射出来&#xff0c;查了一圈之后&#xff0c;发现应该使用Docker Desktop软件&#xff0c;下面是安装和使用的方式 …

error1310 写入文件时发生错误,请确认您是否有访问权限 也可能出现error 1304 :写入文件时出错

一般错误提示如下 error1310 Error writing to file 错误 1310 &#xff1a;写入文件时出错&#xff1a;请确认您有权访问该目录&#xff0c; error1304 Error writing to file 错误 1304 &#xff1a;写入文件时出错&#xff1a;请确认您有权访问该目录 1.首先我们退出所…

揭秘齿轮加工工艺的选用原则:精准打造高效传动的秘密武器

在机械制造领域&#xff0c;齿轮作为传动系统中的重要组成部分&#xff0c;其加工工艺的选择至关重要。不同的齿轮加工工艺会影响齿轮的精度、耐用性和效率。本文将通过递进式结构&#xff0c;深入探讨齿轮加工工艺的选用原则&#xff0c;带您了解如何精准打造高效传动的秘密武…

SpringBoot3.x + JDK21 整合 Mybatis-Plus

前言 SpringBoot3.0 开始最低要求 Java 17&#xff0c;虽然目前最新的版本为 JDK22&#xff0c;但是在官网上看到 JDK23 在今年9月又要发布了&#xff0c;感觉这 JDK 也有点太过于给力了 所以我们选择用目前的 LTS 版本 JDK21 就好了&#xff0c;不用追求最新的 springboot 版…

DOM【事件、操作节点、DOM案例】--学习JavaEE的day49

day49 JS核心技术 DOM 继day48 事件 键盘事件 监听器&#xff1a;onkeydown、onkeypress、onkeyup <!DOCTYPE html> <html><head><meta charset"UTF-8"><title></title></head><body><input type"text&q…

网站工作原理

web发展史 1.0时代不可修改 2.0可修改&#xff0c;比如发微博 有以下问题&#xff1a; 课程2&#xff1a; 静态页面 html 动态页面 php 经过服务端的语言解释器&#xff0c;解析成html文件&#xff0c;剩下的就和静态流程一样 后面三个是web服务器&#xff0c;语言解释器&…

恶劣天候鲁棒三维目标检测论文整理

恶劣天候鲁棒三维目标检测论文整理 Sunshine to Rainstorm: Cross-Weather Knowledge Distillation for Robust 3D Object DetectionRobo3D: Towards Robust and Reliable 3D Perception against CorruptionsLossDistillNet: 3D Object Detection in Point Cloud Under Harsh W…

Android Low Storage机制之DeviceStorageMonitorService

一、Android 版本 Android 13 二、low storage简介(DeviceStorageMonitorService) 设备存储监视器服务是一个模块&#xff0c;主要用来&#xff1a; 1.监视设备存储&#xff08;“/ data”&#xff09;。 2.每60秒扫描一次免费存储空间(谷歌默认值) 3.当设备的存储空间不足…

prometheusgrafananode_export搭建监控平台

一、环境要求 1、docker安装docker环境 2、docker安装prometheus 3、docker安装grafana 4、node-exportor(安装在被测服务器上) 5、我的服务器是Ubuntu 二、docker 安装prometheus 1、下载Prometheus镜像 docker pull prom/prometheus 2、检查端口是否被占用 安装netstat命…

Vitis HLS 学习笔记--抽象并行编程模型-控制驱动与数据驱动

目录 1. 简介 2. Takeaways 3. Data-driven Task-level Parallelism 3.1 simple_data_driven 示例 3.2 分析 hls::task 类 3.3 分析通道(Channel) 3.4 注意死锁 4. Control-driven Task-level Parallelism 4.1 理解控制驱动的 TLP 4.2 simple_control_driven 示例 4…

开源实用!猫抓媒体嗅探浏览器插件

CatCatch&#xff1a;网络资源&#xff0c;一触即发 - 精选真开源&#xff0c;释放新价值。 概览 CatCatch是一个专为浏览器设计的资源嗅探扩展&#xff0c;旨在帮助用户轻松捕获和分析网页中的各种资源。无论是视频、音频还是其他类型的文件&#xff0c;猫爪都能提供直观的界…

C++青少年简明教程:If选择语句

C青少年简明教程&#xff1a;If选择语句 C中选择语句的语法是&#xff1a; if (条件) { 条件成立时需要执行的语句... } [else { 条件不成立时需要执行的语句... }] 说明&#xff1a; if后面使用一个括号&#xff0c;括号里是条件——关系表达式。 所谓的关系表达式就是判…

Java基础之异常(简单易懂)

异常 1.JAVA异常体系 &#xff08;1&#xff09;Throwable类(表示可抛)是所有异常和错误的超类&#xff0c;两个直接子类为Error和Exception,分别表示错误和异常;其中异常类Exception又分为运行时异常和非运行时异常&#xff0c;这两个异常有很大区别&#xff0c;运行时异常也…

生成式AI改变的不只是应用场景,而是要重塑整个行业

即使是在各种创新技术不断涌现的IT行业&#xff0c;生成式AI也可以当之无愧地说是当前全球最受关注的焦点领域&#xff0c;没有之一。 那么对于企业来说&#xff0c;生成式AI技术究竟可以为他们带来怎样的变化和革新&#xff1f;企业又能从中获得怎样的收益&#xff1f; 作为一…

靠着单干实现财富自由,可太爽了

这里所说的“单干”&#xff0c;并不是单打独斗的意思&#xff0c;而是一种商业认知&#xff0c;以及由这种认知衍生出来的商业模式、商业方法和商业实践。 之前提到单干&#xff0c;会本能地以为它是指脱离公司等组织形式&#xff0c;自己一个人做生意。现在单干有了更丰富的…

医院门诊互联电子病历|基于SSM+vue的医院门诊互联电子病历管理信息系统的设计与实现(源码+数据库+文档)

医院门诊互联电子病历管理信息系统 目录 基于SSM&#xff0b;vue的医院门诊互联电子病历管理信息系统的设计与实现 一、前言 二、系统设计 三、系统功能设计 1系统功能模块 2后台登录模块 5.2.1管理员功能 5.2.2用户功能 5.2.3医生功能 四、数据库设计 五、核心代码…

源网络地址转换SNAT

左上角的是访问互联网发送的数据包&#xff0c;第一个是访问&#xff0c;第二个是网页传回来的 3、4项是源端口号和目的端口号&#xff08;3是随机的&#xff08;1024-65535&#xff09;&#xff0c;那个是http的网页服务端口就是80&#xff09; 那么往回传数据的时候源和目的…

[排序算法]2. 图解选择排序及其代码实现

选择排序 选择排序就是重复“从待排序的数据中寻找最小值&#xff0c;将其与序列最左边的数字进行交换”这一操作的算法。在序列中寻找最小值时使用的是线性查找。 算法步骤: 1.使用线性查找在数据中寻找最小值, 于是我们找到了最小值1 2.将最小值1与序列最左边的…

【SqL】数据库脚本编写规范和指南

编写本文档的目的是保证在开发过程中产出高效、格式统一、易阅读、易维护的SQL代码。 1 编写目的 2 SQL书写规范 3 SQL编写原则 软件全套资料获取进主页或者本文末个人名片直接获取。