linux 根据pid查找文件路径
时间: 2023-02-08 08:27:40 浏览: 712
在 Linux 系统中,可以使用命令 "ls -l /proc/PID/exe" 来查找进程 PID 对应的文件路径。
例如:
```ls -l /proc/1234/exe```
这条命令将会显示进程号为1234的进程的文件路径。
相关问题
linux如何根据文件描述符获取pid
可以使用Linux系统中的`/proc`虚拟文件系统获取文件描述符所属进程的PID。
具体操作如下:
1. 使用`lsof`命令获取文件描述符对应的文件路径,例如`lsof -p <pid> -a -d <fd>`,其中`<pid>`为进程的PID,`<fd>`为文件描述符。
2. 利用`readlink`命令获取文件的真实路径,例如`readlink /proc/<pid>/fd/<fd>`。
3. 根据文件的真实路径,在`/proc`目录下查找该文件所属的进程的PID,例如`ls -l /proc/<pid>/cwd`。
示例代码如下:
```bash
#!/bin/bash
# 文件描述符
fd=3
# 获取文件路径
file_path=$(lsof -p $$ -a -d $fd | awk 'NR==2 {print $NF}')
# 获取文件的真实路径
real_path=$(readlink -f $file_path)
# 获取文件所属进程的PID
pid=$(ls -l /proc/*/cwd 2>/dev/null | grep $real_path | awk -F '/' '{print $(NF-1)}')
echo "文件描述符 $fd 对应的文件路径为 $file_path"
echo "文件 $file_path 的真实路径为 $real_path"
echo "文件 $real_path 所属进程的PID为 $pid"
```
其中`$$`表示当前进程的PID。
根据pid查询程序路径
PID是指进程标识符,是操作系统中用来标识进程的一种编号。在Linux系统中,可以通过PID来查询关于一个进程的信息。有时候我们需要知道某个进程的程序路径,这时候,我们就需要根据PID来查询。下面介绍一些方法:
1.通过/proc目录查询
Linux系统中,进程的信息都可以在/proc目录下找到。每个进程都有自己的目录,目录的名称就是进程的PID。进入相应PID的目录,即可找到程序路径。
首先通过pidof命令找到进程的PID:
pidof <进程名>
然后进入/proc目录,并进入相应的PID目录:
cd /proc/<PID>
在该目录下,有一些文件是关于该进程的信息,如:
cmdline:该进程所用的命令行参数,可以查看是否包含程序的路径。
exe:该进程的可执行文件的软链接文件,通过ls -l命令查看。
2.通过ps命令查询
除了在/proc目录下查询,我们还可以使用ps命令查询某个进程的信息。通过ps命令可以查询到进程的PID、程序路径等信息。
ps命令有多种格式,可以使用以下命令查询某个进程的程序路径:
ps -p <进程PID> -o comm=
该命令将显示该进程的可执行文件名,可以在该文件名前加上绝对路径,即可得到程序的路径。
3.使用lsof命令查询
lsof命令用于列出当前系统打开的文件,命令格式如下:
lsof -p <进程PID>
该命令将列出该进程打开的所有文件,其中包括程序的可执行文件和共享库文件等。可以通过查找程序可执行文件的文件描述符来确定程序路径。
综上所述,根据PID查询程序路径的方法有多种,可以根据自己的需求选择适合的方法。