Znajdź, które pliki są odczytywane lub zapisywane

14

Chcę zobaczyć, które pliki są odczytywane lub zapisywane.

Czy jest na to jakiś program lub polecenie? Pamiętam, że użyłem tej metody do wyłapywania wirusów i ukrywania lokalizacji złośliwego oprogramowania, gdy korzystałem z systemu Windows kilka lat temu.

las
źródło

Odpowiedzi:

16

Ten program to („Wyświetl listę otwartych plików”) .lsof

  • Jeśli po prostu otworzysz Terminal i napiszesz lsof, otrzymasz ogromną listę wszystkich otwartych plików, zamiast tego ogranicz go do jednego polecenia, wykonując:

    lsof -c gnome-terminal
    
  • Możesz także ograniczyć wyszukiwanie do określonego katalogu, wpisując

    lsof -c gnome-terminal -a +D /tmp
    
  • Możesz też wyświetlić listę wszystkich otwartych plików w jednym określonym katalogu, w tym informacje o tym, która aplikacja je otworzyła:

    lsof /dev/urandom
    

Pamiętaj, że niektóre procesy są uruchamiane przez użytkownika root superużytkownika , może być konieczne umieszczenie sudoprzed poleceniem, aby uzyskać więcej informacji o otwartych plikach takich procesów.

Aby zawęzić wyszukiwanie, możesz podać grepkonkretne wiersze, np .:

lsof /dev/urandom | grep chrome

  • FD(Plik deskryptora) kolumna wyjściu daje informacje na temat celów programu otwierającego plik (niekoniecznie to, co dzieje się z nim w tej chwili):

    • r oznacza, że ​​plik jest otwarty do odczytu

    • w oznacza, że ​​plik jest otwarty do zapisu

    • u oznacza, że ​​plik jest otwarty do odczytu i zapisu


Aby uzyskać więcej informacji, zobacz stronę podręcznika ( man lsof). Ponadto, jeśli potrzebujesz wyszukać dowolny z plików i katalogów, bardzo pomocny jest Linux Hierarchy System plików .

Stefano Palazzo
źródło
6

Jako kompletną opcję nadmiernego zabijania, ale działającą w czasie rzeczywistym, możesz użyć inotify:

sudo inotifywait -m -r /

Pamiętaj, że zajmie to dużo pamięci i zajmuje dużo czasu, aby skonfigurować. Jak mówi strona podręcznika:

   -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.

To również nie mówi ci, jaki proces powoduje bałagan w plikach, ale może pomóc w identyfikacji zmian w ich trakcie. Użycie opcji „-e open” może pomóc w zmniejszeniu hałasu w naprawdę obciążonym systemie.

Kees Cook
źródło
Jestem prawie pewien, że to nie zadziała, z wcześniejszym ustawieniem wyższego limitu dla inotify / max_user_watches. Próbujesz dodać zegarek do każdego pliku w systemie ...
Volker Siegel,