Я намагався видалити файл у Linux за допомогою rm -rf file_name
, але отримав помилку:
rm: file_name not removed. Text file busy
Як я можу дізнатись, який процес використовує цей файл?
Відповіді:
Ви можете використовувати fuser
команду, наприклад:
fuser file_name
Ви отримаєте список процесів, що використовують файл.
Ви можете використовувати різні прапори з ним, щоб отримати більш детальний результат.
Більше інформації ви можете знайти в статті Вікепедії термофіксатора або на man
сторінках.
fuser
реалізації однакові або працюють однаково. Навіть якщо -i
це визначено в POSIX, конкретна реалізація, яку ви використовуєте, не обов'язково має ті самі параметри, що й описані в статті Вікіпедії. Наприклад, я зараз використовую AIX, і fuser
доступний у цій системі також не має -i
опції.
fuser
ні lsof
працював у мене над гостем віртуального ящика. Ця відповідь мене врятувала.
Відповідь @ jim правильна - fuser
це те, що ви хочете.
Додатково (або по черзі) ви можете використовувати, lsof
щоб отримати більше інформації, включаючи ім’я користувача, на випадок, якщо вам потрібен дозвіл (без необхідності запускати додаткову команду), щоб убити процес. (Хоча, звичайно, якщо процес вбивства - це те, що ви хочете, fuser
можете зробити це за допомогою його -k
опції. Ви можете fuser
використовувати інші сигнали з -s
опцією - перевірте сторінку довідки для деталей.)
Наприклад, при tail -F /etc/passwd
запуску в одному вікні:
ghoti@pc:~$ lsof | grep passwd
tail 12470 ghoti 3r REG 251,0 2037 51515911 /etc/passwd
Зверніть увагу, що ви також можете використовувати, lsof
щоб дізнатись, які процеси використовують конкретні сокети. Чудовий інструмент, який можна мати у своєму арсеналі.
lsof | head -1
щоб побачити всі заголовки.
lsof | grep -E "PID|<your_process_name>"
показує як 1-й рядок, так і процес, який ви хочете зробити.
tree
читає щось із stdin? Якщо так, що це робить із цим входом?
tree
, ні lsof
. Наскільки я розумію, tree
не читає зі стандартного вводу, тому висновок lsof
буде відкинутий при запуску lsof | tree ...
. Якщо це правильно, тоді lsof | tree MyFold
це те саме tree MyFold
, що просто відображає вміст, але не те, які файли відкриваються якимось процесом.