我在 freebsd 中有一个正在运行的进程的 pid。如何获取其当前目录?
问问题
1619 次
4 回答
3
您可以使用以下命令获取当前工作目录的 inode 编号
fstat -p $PID
看起来 lsof 将为您提供当前工作目录的人类可读形式,但我们没有在任何本地 FreeBSD 机器上安装它,所以我无法验证。
于 2009-07-21T15:20:49.333 回答
3
fstat 可以找到inode 号和文件系统,find 可以找到正确的目录。
试试这个:
fstat -p $$|perl -ane '$F[3] eq "wd" && system("find",$F[4],"-xdev","-inum",$F[5],"-print");'
当以非 root 身份运行时,find 可能会输出很多“Permission denied”消息,可以通过close(STDERR);
在前面插入$F[3]
(在第一个单引号之后)来避免这些消息。
于 2009-11-10T18:24:51.513 回答
1
在较新的 FreeBSD 版本中,您可以使用procstat -f $PID
,如果路径名仍在内核名称缓存中,它会显示路径名。
于 2010-08-01T21:05:27.917 回答
-1
/proc/$PID/cwd 包含指向程序当前工作目录的符号链接。
于 2009-07-21T10:45:19.540 回答