freebsd:按进程id运行进程的当前目录

时间:2009-07-21 10:42:52

标签: process freebsd working-directory

我在freebsd中有一个正在运行的进程的pid。 我如何获取其当前目录?

4 个答案:

答案 0 :(得分:3)

您可以使用

获取当前工作目录的inode编号
fstat -p $PID

看起来lsof将为您提供当前工作目录的可读形式,但我们没有在任何本地FreeBSD计算机上安装它,因此我无法验证。

答案 1 :(得分:3)

fstat可以找到inode编号和文件系统,找到可以找到正确的目录。

试试这个:

fstat -p $$|perl -ane '$F[3] eq "wd" && system("find",$F[4],"-xdev","-inum",$F[5],"-print");'

当以非root身份运行时,find可能会输出相当多的“权限被拒绝”消息,这可以通过插入close(STDERR);来避免 在$F[3]前面(在第一个单引号之后)。

答案 2 :(得分:1)

在更新版本的FreeBSD中,您可以使用procstat -f $PID,如果它仍在内核名称缓存中,则显示路径名。

答案 3 :(得分:-1)

/ proc / $ PID / cwd包含程序当前工作目录的符号链接。