网络推荐



本广告位招租!

根据pid号找到程序的具体位置

CU上的一个帖子,问题是这样的:

QUOTE:

我有一个程序是用cd进入主目录后然后用 ./程序名 运行的。
这样导致这个程序通过ps或者top都看不到它的运行主目录在那里。
另外用用lsof -p PID 得到的结果是
perl5.8.8 32285 nobody  cwd   VDIR       0,81      512        2 /
整个lsof返回的信息没有明确的程序运行的主目录信息。
这个问题还真没想过,有兄弟给出了一个答案,标记下:

QUOTE:

$ ps -ax| grep <your_program>
得到进程pid

$ fstat -p <pid> | grep text
这是程序的正文段对应的文件的文件描述符

$ find /foo -inum <inum>
然后查找inum对应的文件

一个具体的例子:
$ ps -ajx|grep mysql
mysql    92539 60939 60939 57079    0 I     ??  1558:56.08 [mysqld]
$ fstat -p 92539 | grep text
mysql    mysqld     92539 text /test   54091778 -rwxr-xr-x  6296203  r
$ find /test -inum 54091778
/test/mysql-5.1.26/libexec/mysqld

notes: 注意fstat输出中的mount字段, 本例为/test, 查找时就在它下面找