我有一个守护进程,我想知道它打开了什么文件(最好是CWD是什么)。 有没有可以告诉我的shell命令?
我非常喜欢lsof ,但是我认为对于这样一个简单的问题来说这太过分了。 /proc文件系统包含你想知道的一切。 也许一个例子是最好的:
#ps ax | grep tail 7196 pts / 4 S + 0:00 tail -f / var / log / messages 8773 pts / 0 R + 0:00 grep尾巴 #ls -l / proc / 7196 / cwd lrwxrwxrwx 1 insyte insyte 0 2009-07-29 19:05 / proc / 7196 / cwd - > / home / insyte #ls -l / proc / 7196 / fd 总计0 lrwx ------ 1 insyte insyte 64 2009-07-29 19:05 0 - > / dev / pts / 4 lrwx ------ 1 insyte insyte 64 2009-07-29 19:05 1 - > / dev / pts / 4 lrwx ------ 1 insyte insyte 64 2009-07-29 19:02 2 - > / dev / pts / 4 lr-x ------ 1 insyte insyte 64 2009-07-29 19:05 3 - > / var / log / messages
因此,您可以看到/proc/$PID目录包含一个名为“cwd”的符号链接,该链接链接进程的CWD。 /proc/$PID/fd列出的打开的文件描述符也是如此。
/proc/$PID层次结构包含大量有关所有正在运行的进程的信息。 值得一提!
如果你有命令lsof可用[大多数* nix口味],你可以使用:
lsof -p NNN
列出按进程NNN打开的文件。 我有一段时间没有使用BSD,但是从内存fuser是一个接近平行于lsof。
我不知道一个命令来find一个进程的cwd ,但在Linux上,cwd被链接到进程的/ proc目录中。 的/ proc / NNN / CWD。
如果你知道进程的PID,你可以发出一个
lsof | grep YOURPID
快速和容易记住。
要么
lsof -c yourprogramexecutable
如果安装在您的系统上,请试试lsof
d