Я намагався видалити файл у 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, що просто відображає вміст, але не те, які файли відкриваються якимось процесом.