最近有一个(未公开证实的)报告 Skype 正在访问不应访问的文件,无需用户干预。我不知道 Linux 上的 Skype 是否存在这种情况,但如果能够找到答案就好了。有没有办法跟踪特定进程访问的所有文件?
答案1
通过以下方式启动您的流程strace
:
strace -fe open skype
您将看到每个系统调用的列表open()
,即进程在其生命周期中打开的每个文件(或连接)。
查看当前打开的文件描述符不会提供日志,而只会提供进程当前访问内容的“快照”。
答案2
给定 Skype 进程的 PID,您可以执行以下操作:
for fd in /proc/$skype_pid/fd/*;do
echo -n "File descriptor $fd points to "
readlink "$fd"
done
对于给定进程,/proc/$PID/fd
包含指向该进程当前打开的所有文件的符号链接。这些链接以文件描述符编号命名。因此,例如,要找出进程从何处获取其标准输入,您可以readlink /proc/$pid_of_process/fd/0
.上面将告诉您 Skype 进程打开的所有文件。
如果您不确定进程的 PID,请尝试
$ pgrep skype
首先要找出答案。
这仅适用于具有 procfs 的系统,GNU/Linux 就是其中之一。