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?
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 man
stronach.
fuser
implementacje są takie same lub działają w ten sam sposób. Nawet jeśli-i
jest 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, afuser
dostępne w tym systemie również nie mają takiej-i
opcji.fuser
nielsof
pracowali dla mnie na gościu virtualbox. Ta odpowiedź mnie uratowała.Odpowiedź @ jim jest poprawna -
fuser
tego chcesz.Dodatkowo (lub alternatywnie) możesz użyć,
lsof
aby 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,fuser
możesz to zrobić za pomocą jego-k
opcji. Możeszfuser
użyć innych sygnałów z-s
opcją - sprawdź stronę podręcznika po szczegóły.)Na przykład z
tail -F /etc/passwd
uruchomionym w jednym oknie:Zauważ, że możesz również użyć,
lsof
aby dowiedzieć się, jakie procesy używają określonych gniazd. Doskonałe narzędzie, które możesz mieć w swoim arsenale.źródło
lsof | head -1
aby zobaczyć wszystkie nagłówki.lsof | grep -E "PID|<your_process_name>"
pokazuje zarówno pierwszy wiersz, jak i proces, o który chcesz zapytać.Jak pokazano na załączonym obrazku:
źródło
tree
czyta cokolwiek ze stdin? Jeśli tak, co robi z tymi danymi wejściowymi?tree
, nielsof
. O ile rozumiem,tree
nie czyta ze standardowego wejścia, dlatego wyjścielsof
jest odrzucane po uruchomieniulsof | tree ...
. Jeśli to prawda, tolsof | tree MyFold
jest to samo cotree MyFold
, które wyświetla tylko zawartość, ale nie wyświetla plików otwieranych przez jakiś proces.