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, 查找时就在它下面找
