linux 进程的路径(linux查看进程状态)
如何获取linux进程的执行文件路径
ps查看所有符合./cmd的进程,找出其对应的进程号用ll命令: ll进程号如下显示一个示例: [root@Cluster1 proc]# ll 22401 total 0-r--r--r-- 1 zhouys zhouys 0 Dec 11 11:10 cmdline-r--r--r-- 1 zhouys zhouys 0 Dec 11 11:10 cpu lrwxrwxrwx 1 zhouys zhouys 0 Dec 11 11:10 cwd->/home/zhouys/sbs/bin-r-------- 1 zhouys zhouys 0 Dec 11 11:10 environ lrwxrwxrwx 1 zhouys zhouys 0 Dec 11 11:10 exe->/home/zhouys/sbs/bin/cbs(deleted) dr-x------ 2 zhouys zhouys 0 Dec 11 11:10 fd-r-------- 1 zhouys zhouys 0 Dec 11 11:10 maps-rw------- 1 zhouys zhouys 0 Dec 11 11:10 mem-r--r--r-- 1 zhouys zhouys 0 Dec 11 11:10 mounts lrwxrwxrwx 1 zhouys zhouys 0 Dec 11 11:10 root->/-r--r--r-- 1 zhouys zhouys 0 Dec 11 11:10 stat-r--r--r-- 1 zhouys zhouys 0 Dec 11 11:10 statm-r--r--r-- 1 zhouys zhouys 0 Dec 11 11:10 status/proc文件系统下的进程号目录下面的文件镜像了进程的当前运行信息,从中可以看到: cwd符号链接的就是进程22401的运行目录; exe符号连接就是执行程序的绝对路径; cmdline就是程序运行时输入的命令行命令;本例为:./cbs cpu记录了进程可能运行在其上的cpu;显示虚拟的cpu信息 environ记录了进程运行时的环境变量 fd目录下是进程打开或使用的文件的符号连接...通过cwd直接进入进程运行目录,通过查看相关信息就可以定位此目录对应那个端口号,以及定位是那个应用才使用此服务程序。
Linux通过进程ID查找文件路径
Linux系统中,进程管理的一个重要工具是/proc目录,它以虚拟文件系统的形式展示了系统运行时的实时信息,每个运行的进程在其下都有一个以PID命名的目录。要通过进程ID查找文件路径,可以按照以下步骤操作:
步骤1:定位进程PID
首先,使用ps和grep组合命令找到目标进程的PID。例如:
shell
ps aux| grep [目标进程名称]
步骤2:查看进程详细信息
在/proc/[PID]目录下,有众多文件提供进程信息。如查看可执行文件路径,需关注的文件是/proc/[PID]/exe。
步骤3:查看可执行文件路径
使用ls-l命令查看/proc/[PID]/exe文件的链接,链接指向实际的可执行文件路径:
shell
ls-l/proc/[PID]/exe
示例
以查找进程ID为18283的可执行文件路径为例:
shell
ls-l/proc/18283/exe
输出可能显示为:
/proc/18283/exe->/usr/bin/python3
这表明进程18283的可执行文件是/usr/bin/python3。
注意事项
在操作时,请确保权限允许,以免权限不足导致无法访问相关文件。了解这些基本操作后,可以方便地追踪和管理Linux系统中的进程文件路径。
Linux如何根据进程ID查找启动程序的路径
正常运行中的进程树关系如下(为了简化,只显示一部分进程):
$ ps x
PID TTY STAT TIME COMMAND
17279 pts/8 Ss 0:00-bash
18618 pts/8 R+ 0:00 ps xf
18283 pts/8 S 0:00 A
18284 pts/8 S 0:00 A
18321 pts/8 S 0:00 a
18322 pts/8 S 0:00 a
出问题时进程的状态为:
$ ps x
PID TTY STAT TIME COMMAND
17279 pts/8 Ss 0:00-bash
18618 pts/8 R+ 0:00 ps xf
18283 pts/8 Z 0:00 A<defunct>
18284 pts/8 S 0:00 A
18321 pts/8 S 0:00 a
18322 pts/8 S 0:00 a
找到某进程启动路径的方法是:
1.我们可以从ps命令中得到僵死进程的PID,如上例中18283.
2.进入/proc目录下以该PID命名的目录中
3.输入ls-l,结果中 exe链接对应的就是可执行文件的全路经
$ ls-l/proc/18283
总计 0
dr-xr-xr-x 2 qhkf qhkf 0 01-06 11:14 attr
-r-------- 1 qhkf qhkf 0 01-06 11:14 auxv
-r--r--r-- 1 qhkf qhkf 0 01-06 10:38 cmdline
-r--r--r-- 1 qhkf qhkf 0 01-06 11:14 cpuset
lrwxrwxrwx 1 qhkf qhkf 0 01-06 11:14 cwd->/v8t/qhkf/risk_b/kssmdb
-r-------- 1 qhkf qhkf 0 01-06 11:14 environ
lrwxrwxrwx 1 qhkf qhkf 0 01-06 11:14 exe->/v8t/qhkf/risk_b/kssmdb/A
dr-x------ 2 qhkf qhkf 0 01-06 10:38 fd
-rw-r--r-- 1 qhkf qhkf 0 01-06 11:14 loginuid
-r--r--r-- 1 qhkf qhkf 0 01-06 11:14 maps
-rw------- 1 qhkf qhkf 0 01-06 11:14 mem
-r--r--r-- 1 qhkf qhkf 0 01-06 11:14 mounts
-r-------- 1 qhkf qhkf 0 01-06 11:14 mountstats
-r--r--r-- 1 qhkf qhkf 0 01-06 11:14 numa_maps
-rw-r--r-- 1 qhkf qhkf 0 01-06 11:14 oom_adj
-r--r--r-- 1 qhkf qhkf 0 01-06 11:14 oom_score
lrwxrwxrwx 1 qhkf qhkf 0 01-06 11:14 root->/
-r--r--r-- 1 qhkf qhkf 0 01-06 11:14 schedstat
-r-------- 1 qhkf qhkf 0 01-06 11:14 smaps
-r--r--r-- 1 qhkf qhkf 0 01-06 10:38 stat
-r--r--r-- 1 qhkf qhkf 0 01-06 11:14 statm
-r--r--r-- 1 qhkf qhkf 0 01-06 10:38 status
dr-xr-xr-x 6 qhkf qhkf 0 01-06 11:14 task
-r--r--r-- 1 qhkf qhkf 0 01-06 11:14 wchan
剩下的就是排查问题了.OVER.