Dowiedz się, który proces zapisuje do określonego katalogu


19

Mam katalog / some / dir i widzę, że cały czas pojawiają się tam nowe pliki. Jak dowiedzieć się, który proces tworzy te pliki?

Odpowiedzi:


18

Spróbować lsof +r2 | grep '/some/dir'. Spowoduje to wyświetlenie procesów uzyskujących dostęp do / some / dir i odświeżanie co 2 sekundy.


2
Thaks, jest to dość blisko tego, czego potrzebuję, ponieważ najpierw tworzy całą listę otwartych plików, a następnie filtruje według / some / dir. Jeśli jednak procesy tworzą pliki bardzo szybko i nie utrzymują ich w stanie otwartym, rozumiem, że niektóre powyższe mogą nawet nie trafić. Myślę, że w takim przypadku jedyną opcją jest podsystem kontroli, prawda?
homer5439,

Twoje założenie jest słuszne. Innym pomysłem jest użycie inotifywait, patrz linux.die.net/man/1/inotifywait
weeheavy,

dzięki, rozważałem już wcześniej narzędzia inotify, ale odkryłem, że działają one wyłącznie na poziomie systemu plików i wydaje się, że nie są w stanie dostarczyć informacji o tym, kto co zrobił.
homer5439,

18

Użyj auditpodsystemu jądra

auditctl -w /some/dir/ -p war -k whatsgoingon

To ustawia hak czekający na coś, co dzieje się w katalogu / some / dir /.

Następnie upewnij się, że masz auditduruchomionego demona. Następnie poczekaj, aż pliki się pojawią, i zobacz, skąd /var/log/auditd.loglub gdziekolwiek w twoim systemie zapisuje i przeczytaj, co się stało i według jakiego procesu.


Dzięki, wygląda na to, że właśnie tak robi, chociaż wymaga zainstalowanych narzędzi kontroli, które prawdopodobnie nie są wszędzie domyślnie. Ale ok, jeśli ktoś potrzebuje tych informacji, zawsze można je zainstalować.
homer5439,

Uwaga dla osób, które to widzą: nie można umieszczać zegarków w katalogach najwyższego poziomu (zabronione przez jądro)
Tony Sepia

1
To naprawdę skuteczny sposób! Wielkie dzięki!!! BTW, kiedy skończysz, możesz usunąć wszystkie zaczepy, aby uniknąć zapisywania dziennika kontroli na zawsze auditctl -D. Możesz użyć, auditctl -laby wyświetlić listę wszystkich haków.
Robert

0

lsof może pomóc:

# lsof -r1 /some/dir/*

1
Dzięki. Czy to prawda, że ​​powyższe polecenie mówi mi tylko, kto uzyskuje dostęp do istniejących plików, ale niczego nie pokazuje dla nowo utworzonych plików? Rozumiem, że / some / dir / * rozwija się do listy plików obecnych w momencie wywołania polecenia.
homer5439,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.