当前位置: 首页 > news >正文

【操作系统】Linux进程管理和调试

在 Linux 中,可以通过以下方法查看 PID(进程ID)对应的进程名称和详细信息


1. 使用 ps 命令(最直接)

ps -p <PID> -o pid,comm,cmd

示例

ps -p 1234 -o pid,comm,cmd

输出

  PID COMMAND         CMD
 1234 nginx          nginx: worker process

字段说明
PID:进程ID
COMMAND:进程名称(短格式)
CMD:完整的命令行(包括参数)

扩展用法

ps -p <PID> -o pid,ppid,user,comm,cmd,%cpu,%mem,start_time

• 可以显示 父进程ID(PPID)用户CPU/内存占用启动时间 等。


2. 使用 tophtop(实时查看)

(1) top(系统自带)
top -p <PID>

• 按 q 退出。
• 显示进程的 CPU/内存占用运行时间 等。

(2) htop(更友好,需安装)
htop

• 支持鼠标操作,直接搜索 PID。
• 安装方式:

sudo apt install htop    # Debian/Ubuntu
sudo yum install htop    # CentOS/RHEL

3. 使用 /proc/<PID>/ 目录

Linux 的 /proc 文件系统存储了所有进程的运行时信息:

cat /proc/<PID>/comm   # 进程名称(短格式)
cat /proc/<PID>/cmdline  # 完整命令行(包括参数,以\0分隔)
cat /proc/<PID>/status  # 进程详细信息(包括用户、内存等)

示例

cat /proc/1234/comm

输出

nginx

4. 使用 pgreppkill(按名称查 PID)

如果想 反向通过进程名查 PID

pgrep -a nginx  # 查找所有 nginx 进程(显示 PID + 命令行)

输出

1234 nginx: worker process
5678 nginx: master process

5. 使用 lsof(查看进程打开的文件)

lsof -p <PID>

• 显示该进程打开的所有文件、网络连接等。
• 适合调试 文件占用网络端口冲突


6. 使用 systemctl(系统服务进程)

如果是 systemd 管理的服务:

systemctl status <PID>  # 某些系统支持

或反向查找:

systemctl status nginx   # 查看 nginx 服务的 PID

7. 综合示例:快速定位 PID 对应的进程

# 方法1:直接查
ps -p 1234 -o pid,user,comm,cmd

# 方法2:通过 /proc
cat /proc/1234/comm

# 方法3:用 htop 交互式查看
htop

总结表

方法命令示例适用场景
psps -p 1234 -o pid,comm,cmd快速查看进程基本信息
top / htoptop -p 1234实时监控进程资源占用
/proc/<PID>/cat /proc/1234/comm直接读取内核提供的进程信息
pgreppgrep -a nginx通过名称反向查找 PID
lsoflsof -p 1234查看进程打开的文件/网络连接
systemctlsystemctl status nginx管理系统服务的进程

常见问题

Q1:如何知道某个端口(如 80)对应的进程?
sudo lsof -i :80
Q2:如何杀死某个 PID 的进程?
kill -9 <PID>      # 强制终止
kill -15 <PID>     # 优雅终止(推荐先尝试)
http://www.dtcms.com/a/104926.html

相关文章:

  • QML Book 学习基础6(定位/布局元素)
  • 【浏览器的渲染原理】
  • uniapp微信小程序开发工具本地获取指定页面二维码
  • 【AI工具】DeepSeek直接生成图片,效果不错
  • 前后端数据序列化:从数组到字符串的旅程(附优化指南)
  • 爬虫:请求头,requests库基本使用
  • 《C++Linux编程进阶:从0实现muduo 》-第8讲.C++面试如何高效获取线程ID
  • nginx如何重启
  • 物联网时代,HMI 设计的创新机遇与挑战
  • 人工智能的三个主义(行为主义、连结主义、符号主义)的整体性关系(并非割裂)
  • MySQL注入中user-agent和cookie存在的注入
  • OpenCV 从入门到精通(day_03)
  • 化学方程式配平 第33次CCF-CSP计算机软件能力认证
  • WEB安全--文件上传漏洞--黑名单绕过
  • 《Linux运维总结:基于银河麒麟V10操作系统+ARM64架构CPU二进制部署单机ACL版consul v1.18.1》
  • 【linux】管理磁盘——RAID10(含备份)与逻辑卷管理
  • Java线程池详解
  • 用deepseek创建可运行的简单的php框架
  • 如何在k8s中对接s3存储
  • 多线程 - wait notify
  • Apache Commons Lang3 常用方法详解
  • 大数据(4.3)Hive基础查询完全指南:从SELECT到复杂查询的10大核心技巧
  • 【超分辨率】基于DDIM+SwinUnet实现超分辨率
  • 深入理解pthread多线程编程:从基础到生产者-消费者模型
  • Android: Handler 的用法详解
  • 【工具】在 Visual Studio 中使用 Dotfuscator 对“C# 类库(DLL)或应用程序(EXE)”进行混淆
  • 关于 Nginx 配置中 proxy_set_header Host $host 的作用及其对 HTTP 请求头影响的详细说明,结合示例展示设置前后的差异
  • 【VSCode SSH 连接远程服务器】:身份验证时,出现 key: invalid format 的问题
  • 服务端向客户端推送数据的实现方案
  • Linux | I.MX6ULL 终结者底板原理图讲解完(第六天)