查找要读取或写入的文件


14

我想查看读取或写入的文件。

是否有任何程序或命令?我记得在几年前使用Windows时,我曾使用这种方法来查找病毒和恶意软件隐藏位置。

Answers:


15

该程序为(“列出打开的文件”)lsof

  • 如果仅打开Terminal并键入lsof,则会得到所有打开文件的巨大列表,而是通过执行以下操作将其限制为一个命令:

    lsof -c gnome-terminal
    
  • 您还可以通过键入以下内容将搜索限制到特定目录

    lsof -c gnome-terminal -a +D /tmp
    
  • 或在一个特定目录中列出所有打开的文件,包括哪些应用程序已将其打开:

    lsof /dev/urandom
    

请记住,某些进程是由超级用户root启动的,您可能需要放在sudo命令前面,以获取有关此类进程的打开文件的更多信息。

要缩小搜索范围,可以指定grep几行,即:

lsof /dev/urandom | grep chrome

  • 输出的FD(File Descriptor)列为您提供有关程序打开文件目的的信息(不一定是当前发生的情况):

    • r 表示该文件已打开以供阅读

    • w 表示该文件已打开以进行写入

    • u 表示已打开文件以供读取和写入


有关更多详细信息,请参阅手册页man lsof)。另外,如果您需要查找任何文件和目录,则Linux Filesystem Hierarchy Standard非常有用。


4

作为一个完整的过度杀伤选项,但它是实时的,您可以使用inotify:

sudo inotifywait -m -r /

请注意,这将消耗大量内存,并且需要很长时间来设置。如联机帮助页所述:

   -r, --recursive
          Watch all subdirectories of any directories passed as arguments.
          Watches  will be set up recursively to an unlimited depth.  Sym‐
          bolic links are not  traversed.   Newly  created  subdirectories
          will also be watched.

          Warning:  If  you use this option while watching the root direc‐
          tory of a large tree, it may take quite a while until  all  ino‐
          tify watches are established, and events will not be received in
          this time.  Also, since one inotify watch  will  be  established
          per subdirectory, it is possible that the maximum amount of ino‐
          tify watches per user will be reached.  The default  maximum  is
          8192;  it  can  be  increased  by  writing  to /proc/sys/fs/ino‐
          tify/max_user_watches.

这也不会告诉您什么过程正在处理文件,但可能有助于识别发生的更改。使用“ -e open”可能有助于减少真正繁忙的系统上的某些噪音。


我非常确定,无论是否为inotify / max_user_watches设置了更高的限制,这都将不起作用。您正在尝试将手表添加到系统上的每个文件中……
Volker Siegel 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.