Jak sprawdzić, co blokuje plik?

11

Zauważyłem, że czasami Mail.app blokuje pliki. Sama blokada umożliwia przenoszenie plików do Kosza, ale nie pozwala na opróżnianie Kosza. (Być może w tym przypadku Kosz powinien zostać przemianowany na Thrash)

Czy istnieje sposób (za pomocą polecenia terminala lub aplikacji), aby sprawdzić, która aplikacja blokuje plik i / lub odblokowuje plik bez zamykania aplikacji?

Michał M.
źródło
Ha ha! Masz mnie. ;)
Michał M.,

Odpowiedzi:

13

Jak mówi Rabarberski, lsofmożna go użyć do znalezienia dowolnego procesu, w którym plik jest otwarty. Zauważ, że musisz uruchomić program jako root, tzn. Używając sudoi że możesz podać nazwę ścieżki do pliku, który cię interesuje, jako argument, więc nie ma potrzeby grepwywoływania w podpowiedzi wskazanej przez Rabarberskiego. Ponadto, jeśli proces blokuje plik, powinieneś być w stanie to zobaczyć w kolumnie FD na lsofwyjściu. Szczegółowe informacje można znaleźć na stronie podręcznika. (Kiedy uruchamiam sudo lsofna moim komputerze, nie widzę zablokowanych plików, więc nie będę gwarantować, że działa to na Macu. W sudokońcu jest to ogólny program unixowy i możliwe, że niektóre funkcje nie działają na OSX.)

Nie można odblokować pliku bez zabicia procesu blokującego. Ale możesz go usunąć za pomocą rmwiersza poleceń.

Harald Hanche-Olsen
źródło
Właśnie zauważyłem głupi błąd: tam, gdzie jest napisane „w sudokońcu…”, lsofchciałem o tym wspomnieć. Nie zamierzam go edytować - jest to zbyt małe, aby uzasadnić wypukłość na pierwszej stronie.
Harald Hanche-Olsen