查找Linux下进程文件位置

Linux下查看某个进程文件的启动位置

以下以man shutdown为例。

1
2
3
[root@mg1 ~]# ps -ef | grep shutdown
root 162022 161970 0 20:17 pts/0 00:00:00 man shutdown
root 162042 162006 0 20:17 pts/1 00:00:00 grep shutdown

此时只能看到相对路径,PID为162022.此时,通过ls -al /proc/162022查看:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
[root@mg1 ~]# ls -al /proc/162022
total 0
dr-xr-xr-x 8 root root 0 May 31 20:17 .
dr-xr-xr-x 815 root root 0 May 9 22:54 ..
dr-xr-xr-x 2 root root 0 May 31 20:52 attr
-rw-r--r-- 1 root root 0 May 31 20:52 autogroup
-r-------- 1 root root 0 May 31 20:52 auxv
-r--r--r-- 1 root root 0 May 31 20:52 cgroup
--w------- 1 root root 0 May 31 20:52 clear_refs
-r--r--r-- 1 root root 0 May 31 20:17 cmdline
-rw-r--r-- 1 root root 0 May 31 20:52 comm
-rw-r--r-- 1 root root 0 May 31 20:52 coredump_filter
-r--r--r-- 1 root root 0 May 31 20:52 cpuset
lrwxrwxrwx 1 root root 0 May 31 20:52 cwd -> /opt
-r-------- 1 root root 0 May 31 20:52 environ
lrwxrwxrwx 1 root root 0 May 31 20:52 exe -> /usr/bin/man
dr-x------ 2 root root 0 May 31 20:17 fd
dr-x------ 2 root root 0 May 31 20:52 fdinfo
-r-------- 1 root root 0 May 31 20:52 io
-rw------- 1 root root 0 May 31 20:52 limits
-rw-r--r-- 1 root root 0 May 31 20:52 loginuid
-r--r--r-- 1 root root 0 May 31 20:52 maps
-rw------- 1 root root 0 May 31 20:52 mem
-r--r--r-- 1 root root 0 May 31 20:52 mountinfo
-r--r--r-- 1 root root 0 May 31 20:52 mounts
-r-------- 1 root root 0 May 31 20:52 mountstats
dr-xr-xr-x 6 root root 0 May 31 20:52 net
dr-x--x--x 2 root root 0 May 31 20:52 ns
-r--r--r-- 1 root root 0 May 31 20:52 numa_maps
-rw-r--r-- 1 root root 0 May 31 20:52 oom_adj
-r--r--r-- 1 root root 0 May 31 20:52 oom_score
-rw-r--r-- 1 root root 0 May 31 20:52 oom_score_adj
-r--r--r-- 1 root root 0 May 31 20:52 pagemap
-r--r--r-- 1 root root 0 May 31 20:52 personality
lrwxrwxrwx 1 root root 0 May 31 20:52 root -> /
-rw-r--r-- 1 root root 0 May 31 20:52 sched
-r--r--r-- 1 root root 0 May 31 20:52 schedstat
-r--r--r-- 1 root root 0 May 31 20:52 sessionid
-r--r--r-- 1 root root 0 May 31 20:52 smaps
-r--r--r-- 1 root root 0 May 31 20:52 stack
-r--r--r-- 1 root root 0 May 31 20:17 stat
-r--r--r-- 1 root root 0 May 31 20:52 statm
-r--r--r-- 1 root root 0 May 31 20:17 status
-r--r--r-- 1 root root 0 May 31 20:52 syscall
dr-xr-xr-x 3 root root 0 May 31 20:52 task
-r--r--r-- 1 root root 0 May 31 20:52 wchan

发现lrwxrwxrwx 1 root root 0 May 31 20:52 cwd -> /opt这就是运行命令时所在的目录。

注:

  • cwd符号链接的是进程运行目录;
  • exe符号连接就是执行程序的绝对路径;
  • cmdline就是程序运行时输入的命令行命令;
  • environ记录了进程运行时的环境变量;
  • fd目录下是进程打开或使用的文件的符号连接。

参考资料:

  1. Linux下使用ps命令查看某个进程文件的启动位置
如果文章对您有帮助,感谢您的赞助支持!