Próbowałem usunąć plik w systemie Linux za pomocą rm -rf file_name, ale otrzymałem błąd:
rm: file_name not removed. Text file busy
Jak mogę się dowiedzieć, który proces używa tego pliku?
Odpowiedzi:
Możesz użyć fuser polecenia, takiego jak:
fuser file_name
Otrzymasz listę procesów korzystających z pliku.
Możesz użyć z nim różnych flag, aby uzyskać bardziej szczegółowe wyniki.
Więcej informacji można znaleźć w artykule w Wikipedii dotyczącym utrwalacza lub na manstronach.
fuserimplementacje są takie same lub działają w ten sam sposób. Nawet jeśli -ijest zdefiniowana w POSIX, konkretna implementacja, której używasz, niekoniecznie ma te same opcje, co te opisane w artykule w Wikipedii. Na przykład używam teraz AIX, a fuserdostępne w tym systemie również nie mają takiej -iopcji.
fusernie lsofpracowali dla mnie na gościu virtualbox. Ta odpowiedź mnie uratowała.
Odpowiedź @ jim jest poprawna - fusertego chcesz.
Dodatkowo (lub alternatywnie) możesz użyć, lsofaby uzyskać więcej informacji, w tym nazwę użytkownika, na wypadek, gdybyś potrzebował pozwolenia (bez konieczności uruchamiania dodatkowego polecenia), aby zabić proces. (Chociaż oczywiście, jeśli zabijanie procesu jest tym, czego chcesz, fusermożesz to zrobić za pomocą jego -kopcji. Możesz fuserużyć innych sygnałów z-s opcją - sprawdź stronę podręcznika po szczegóły.)
Na przykład z tail -F /etc/passwduruchomionym w jednym oknie:
ghoti@pc:~$ lsof | grep passwd
tail 12470 ghoti 3r REG 251,0 2037 51515911 /etc/passwd
Zauważ, że możesz również użyć, lsofaby dowiedzieć się, jakie procesy używają określonych gniazd. Doskonałe narzędzie, które możesz mieć w swoim arsenale.
lsof | head -1aby zobaczyć wszystkie nagłówki.
lsof | grep -E "PID|<your_process_name>"pokazuje zarówno pierwszy wiersz, jak i proces, o który chcesz zapytać.
treeczyta cokolwiek ze stdin? Jeśli tak, co robi z tymi danymi wejściowymi?
tree, nie lsof. O ile rozumiem, treenie czyta ze standardowego wejścia, dlatego wyjście lsofjest odrzucane po uruchomieniu lsof | tree .... Jeśli to prawda, to lsof | tree MyFoldjest to samo co tree MyFold, które wyświetla tylko zawartość, ale nie wyświetla plików otwieranych przez jakiś proces.