Как преодолеть «девайс» или «заняться ресурсами»?

Я попробовал rm -rf папку и получил «занятое устройство или ресурс».

В Windows я бы использовал LockHunter для решения этой проблемы. Что такое эквивалент Linux? (Пожалуйста, дайте в качестве ответа простой метод «разблокировать этот», а не полные статьи, такие как этот . «Мне полезно, я в настоящее время интересуюсь просто ASimpleMethodThatWorks» ¢)

173 голоса | спросил ripper234 13 PMpWed, 13 Apr 2011 12:51:26 +040051Wednesday 2011, 12:51:26

9 ответов


176

Инструмент, который вы хотите, это lsof, который обозначает список открытых файлов .

У него много опций, поэтому проверьте справочную страницу, но если вы хотите увидеть все открытые файлы в каталоге:

lsof +D /path

Это будет перезаписываться через файловую систему в /path, поэтому будьте осторожны, делая это на больших деревьях каталогов.

Как только вы узнаете, какие процессы открывают файлы, вы можете выйти из этих приложений или убить их командой kill(1).

ответил camh 13 PMpWed, 13 Apr 2011 13:22:46 +040022Wednesday 2011, 13:22:46
88

иногда это результат проблем с установкой, поэтому я отключил файловую систему или каталог, который вы пытаетесь удалить:

  

umount /path

ответил kip2 3 AMpThu, 03 Apr 2014 05:24:22 +040024Thursday 2014, 05:24:22
12

Я использую fuser для такого рода вещей. Он будет перечислять, какой процесс использует файл или файлы в mount.

ответил BillThor 13 PMpWed, 13 Apr 2011 18:32:25 +040032Wednesday 2011, 18:32:25
10

Вот решение:

  1. Перейдите в каталог и введите ls -a
  2. Вы найдете файл .xyz
  3. vi .xyz и посмотрите, что является содержимым файла
  4. ps -ef | grep username
  5. Вы увидите содержимое .xyz в восьмом столбце (последняя строка)
  6. kill -9 job_ids - где job_ids - это значение второго столбца соответствующей ошибки, вызванное содержимым в 8-м столбце
  7. Теперь попробуйте удалить папку или файл.
ответил user73011 19 J0000006Europe/Moscow 2014, 15:17:26
4

У меня была эта проблема, когда автоматизированный тест создал ramdisk. Команды, предложенные в других ответах, lsof и fuser, не помогли. После тестов я попытался размонтировать его, а затем удалить папку. Я был очень смущен целую вечность, потому что я не мог избавиться от него - я продолжал получать «Устройство или ресурс занят» !

Случайно я узнал, как избавиться от ramdisk. Мне пришлось размонтировать его столько же раз, сколько я использовал команду mount, т. Е. sudo umount path

В связи с тем, что он был создан с использованием автоматического тестирования, он многократно монтировался, поэтому я не мог избавиться от него, просто отключив его один раз после тестов. Итак, после того, как я вручную размонтировал его много раз, он снова стал обычной папкой, и я смог удалить его.

Надеюсь, это поможет кому-то другому, кто сталкивается с этой проблемой!

ответил gloriphobia 23 MarpmThu, 23 Mar 2017 15:56:22 +03002017-03-23T15:56:22+03:0003 2017, 15:56:22
4

У меня была эта же проблема, построил однострочный, начиная с рекомендации @camh:

lsof +D ./ | awk '{print $2}' | tail -n +2 | xargs kill -9

Команда awk захватывает PIDS. Команда tail избавляется от досадной первой записи: «PID». Я использовал -9 для kill, другие могут иметь более безопасные параметры.

ответил meetalexjohnson 16 J000000Thursday15 2015, 20:31:15
1

Повторяя вопрос Prabhat выше, у меня была эта проблема в macos high sierra, когда я застрял в процессе encfs, перезагрузка решила его, но это

ps -ef | grep name-of-busy-dir

Показывает мне процесс и PID (столбец два).

sudo kill -15 pid-here

зафиксировал его.

ответил bil 4 PMpWed, 04 Apr 2018 17:10:20 +030010Wednesday 2018, 17:10:20
0

Если у вас есть доступ к серверу, попробуйте

  

Удаление этого сервера с сервера

Или повторите umount и mount , попробуйте umount -l: lazy umount, если вы столкнулись с какой-либо проблемой при обычном umount.

У меня тоже была эта проблема, когда

lsof +D path: не выводит

ps -ef: не дает соответствующей информации

ответил Prabhat Kumar Singh 1 AM000000110000003631 2017, 11:07:36
-2

Резюме:

  1. выход из системы; войдите в
  2. уничтожить идентификаторы процесса


Пример

Во время обхода системы сбой системы оставил меня богатым с файлами эмуляции nfs. Команда umount недоступна.

Как отмечено @camh, lsof идентифицирует эти файлы. Обратите внимание, что есть несколько приложений.

$ lsof +D .
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system 
/run/user/23497/gvfs
      Output information may be incomplete.
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/2017/gvfs
      Output information may be incomplete.
COMMAND     PID    USER   FD   TYPE DEVICE SIZE/OFF       NODE NAME
bash      78600 *******  cwd    DIR   0,59     4096 3241308953 .
bash      79827 *******  cwd    DIR   0,59     4096 3241308953 .
python    79876 *******  cwd    DIR   0,59     4096 3241308953 .
python    79876 *******    5r   REG   0,59     1880 3223241856 ./var/spack/repos/builtin/packages/py-pathos/.nfs00000000c01ec480000000f9
python    79876 *******    7w   REG   0,59        0 3231244662 ./var/spack/repos/builtin/packages/py-pathos/.nfs00000000c098e176000000fa
python    80026 *******  cwd    DIR   0,59     4096 3241308953 .
python    80026 *******    3r   REG   0,59     8615 3223722769 ./lib/spack/spack/.nfs00000000c0261b11000000f4
python    80026 *******    4r   REG   0,59    34118 3240752943 ./lib/spack/spack/.nfs00000000c129f72f000000f7
python    80026 *******    5r   REG   0,59     9776 3237083633 ./lib/spack/external/yaml/lib/yaml/.nfs00000000c0f1f9f1000000f1
python    80026 *******    7r   REG   0,59     1132 3237083641 ./lib/spack/external/yaml/lib/yaml/.nfs00000000c0f1f9f9000000f2
python    80026 *******    8r   REG   0,59     9122 3234950705 ./lib/spack/external/yaml/lib/yaml/.nfs00000000c0d16e31000000f3
python    80213 *******  cwd    DIR   0,59     4096 3241308953 .
python    80253 *******  cwd    DIR   0,59     4096 3241308953 .
python    80253 *******    3r   REG   0,59     8615 3223722769 ./lib/spack/spack/.nfs00000000c0261b11000000f4
python    80253 *******    4r   REG   0,59    34118 3240752943 ./lib/spack/spack/.nfs00000000c129f72f000000f7
python    80253 *******    5r   REG   0,59   130070 3223690614 ./lib/spack/spack/.nfs00000000c0259d76000000f8
python    80253 *******    7r   REG   0,59    15336 3239387892 ./lib/spack/spack/compilers/.nfs00000000c11522f4000000f5
python    80253 *******    8r   REG   0,59    17377 3239387902 ./lib/spack/spack/.nfs00000000c11522fe000000f6
python    80253 *******    9r   REG   0,59    38690 3243144161 ./lib/spack/external/.nfs00000000c14e73e1000000f0
lsb_relea 80260 *******  cwd    DIR   0,59     4096 3241308953 .
lsb_relea 80260 *******    3r   REG   0,59     8615 3223722769 ./lib/spack/spack/.nfs00000000c0261b11000000f4
lsb_relea 80260 *******    4r   REG   0,59    34118 3240752943 ./lib/spack/spack/.nfs00000000c129f72f000000f7
lsb_relea 80260 *******    5r   REG   0,59   130070 3223690614 ./lib/spack/spack/.nfs00000000c0259d76000000f8
lsb_relea 80260 *******    7r   REG   0,59    15336 3239387892 ./lib/spack/spack/compilers/.nfs00000000c11522f4000000f5
lsb_relea 80260 *******    8r   REG   0,59    17377 3239387902 ./lib/spack/spack/.nfs00000000c11522fe000000f6
lsb_relea 80260 *******    9r   REG   0,59    38690 3243144161 ./lib/spack/external/.nfs00000000c14e73e1000000f0
chmod     80288 *******  cwd    DIR   0,59     4096 3241308953 .
lsof      81100 *******  cwd    DIR   0,59     4096 3241308953 .
lsof      81101 *******  cwd    DIR   0,59     4096 3241308953 .

После выхода из системы и возврата туда, отправляйте с ошибочными процессами в порядке @ user73011:

kill -9 78600 79827 79876

и т. д.

ответил dantopa 15 J000000Saturday17 2017, 03:01:51

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132