Wiem, że to stare pytanie, ale zasugeruję inne podejście na wypadek, gdyby ktoś uznał je za przydatne. Oryginalnie zamieściłem to jako odpowiedź na pytanie, które zostało skopiowane do tego pytania.
Jedną z opcji jest użycie sysdig
: aplikacji do monitorowania systemu typu open source. Za jego pomocą możesz monitorować aktywność w pliku według nazwy. Załóżmy, że chcesz zobaczyć, jaki proces tworzył plik o nazwie /tmp/example.txt
:
# sysdig fd.name=/tmp/example.txt
567335 16:18:39.654437223 0 touch (5470) < openat fd=3(<f>/tmp/example.txt) dirfd=-100(AT_FDCWD) name=/tmp/example.txt flags=70(O_NONBLOCK|O_CREAT|O_WRONLY) mode=0666
567336 16:18:39.654438248 0 touch (5470) > dup fd=3(<f>/tmp/example.txt)
567337 16:18:39.654438592 0 touch (5470) < dup res=0(<f>/tmp/example.txt)
567338 16:18:39.654439629 0 touch (5470) > close fd=3(<f>/tmp/example.txt)
567339 16:18:39.654439764 0 touch (5470) < close res=0
567342 16:18:39.654441958 0 touch (5470) > close fd=0(<f>/tmp/example.txt)
567343 16:18:39.654442111 0 touch (5470) < close res=0
Z tego wyniku widać, że proces o nazwie touch
pid 5470 otworzył plik.
Jeśli chcesz uzyskać więcej informacji, możesz uruchomić w „trybie przechwytywania”, w którym gromadzone są dane śledzenia połączeń systemowych:
# sysdig -w /tmp/dumpfile.scap
Następnie poczekaj na utworzenie pliku, a następnie zatrzymaj się sysdig
i uruchom:
# csysdig -r /tmp/dumpfile.scap
To pozwoli ci odkryć wszystko, co się wydarzyło. Możesz nacisnąć <F2>
i wybrać Files
, naciśnij, <F4>
aby wyszukać nazwę pliku, a następnie naciśnij, <F6>
aby „wykopać” (co spowoduje wyświetlenie wyników podobnych do powyższych poleceń). Dzięki temu możesz następnie zastosować to samo podejście do znalezienia informacji o procesie, który faktycznie utworzył plik.
Istnieje wersja GUI o csysdig
nazwie sysdig-inspect
, jeśli to bardziej twoja filiżanka herbaty.