插件窝 干货文章 linux查看进程位置

linux查看进程位置

进程 路径 bash readlink 656    来源:    2025-04-05

在 Linux 系统中,查看进程的位置(即进程对应的可执行文件路径)有以下几种常用方法:


1. ps 命令 + 进程信息

ps -p <PID> -o cmd=
# 或
ps -aux | grep <进程名>
  • 示例:查看 PID 为 1234 的进程路径
    bash ps -p 1234 -o cmd=
  • 说明
    • -o cmd= 显示完整的命令路径(可能包含参数)。
    • 若路径被截断,使用 ps -auxwwww 显示完整宽度)。

2. pwdx 命令(进程工作目录)

pwdx <PID>
  • 示例
    bash pwdx 1234
  • 输出
    bash 1234: /path/to/working/directory
  • 说明
    显示进程的当前工作目录,不一定是可执行文件路径。

3. lsof 命令(列出打开文件)

lsof -p <PID> | grep txt
  • 示例
    bash lsof -p 1234 | grep txt
  • 输出
    bash COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME bash 1234 root txt REG 253,0 1234567 123456 /usr/bin/bash
  • 说明
    txt 类型表示进程的可执行文件,NAME 列即为路径。

4. readlink 解析 /proc 虚拟文件系统

readlink -f /proc/<PID>/exe
  • 示例
    bash readlink -f /proc/1234/exe
  • 输出
    bash /usr/bin/python3
  • 说明
    /proc/<PID>/exe 是进程可执行文件的符号链接,readlink -f 解析真实路径。

5. pgrep + readlink 组合(通过进程名)

readlink -f /proc/$(pgrep -n <进程名>)/exe
  • 示例:查找最新的 nginx 进程路径
    bash readlink -f /proc/$(pgrep -n nginx)/exe

6. whichwhereis(仅限已知命令名)

which <命令名>
# 或
whereis <命令名>
  • 示例
    bash which python3
  • 说明
    仅适用于在 $PATH 中的命令,不适用于自定义路径启动的进程。

常见场景总结:

需求 推荐命令
已知 PID,查路径 readlink -f /proc/<PID>/exe
已知进程名,查路径 pgrep -n <名> \| xargs -I{} readlink -f /proc/{}/exe
查看进程的工作目录 pwdx <PID>
查看进程的完整命令行 ps -p <PID> -o cmd=

注意事项:

  1. 需要 root 权限才能查看其他用户的进程路径(如 sudo)。
  2. 某些进程可能是内核线程或动态生成的(如 [kthreadd]),无实际路径。