Запуск дд. Почему ресурс занят?

32

Я только что отформатировал карту microSD и хотел бы запустить ddкоманду. К сожалению, ddкоманда не работает:

$ sudo dd bs=1m if=2016-02-26-raspbian-jessie-lite.img of=/dev/rdisk2
dd: /dev/rdisk2: Resource busy
$

Все в интернете говорят, что сначала мне нужно размонтировать диск. Конечно, можете сделать это и двигаться дальше. Но я хочу понять, почему / что именно в OS X делает устройство занятым ? Как мне это диагностировать?

Пока что попробовал:

  1. Список открытых файлов:

    $ lsof /dev/disk2
    $ lsof /dev/disk2s1
    $
    

    Также:

    $ lsof /Volumes/UNTITLED
    $
    
  2. Список пользователей, работающих над файлом:

    $ fuser -u /dev/disk2
    /dev/disk2: 
    $ fuser -u /dev/disk2s1 
    /dev/disk2s1:
    $
    

    Также:

    $ fuser -u /Volumes/UNTITLED
    $
    
  3. Проверьте системные сообщения:

    $ sudo dmesg | grep disk
    $
    

    Также:

    $ sudo dmesg | grep /Volumes/UNTITLED
    $
    

Моя среда

  1. Операционная система:

    Darwin Eugenes-MacBook-Pro-2.local 15.3.0 Darwin Kernel Version 15.3.0: Thu Dec 10 18:40:58 PST 2015; root:xnu-3248.30.4~1/RELEASE_X86_64 x86_64
    
  2. Информация о моем microSD:

    diskutil list disk2
    /dev/disk2 (internal, physical):
       #:                       TYPE NAME                    SIZE       IDENTIFIER
       0:     FDisk_partition_scheme                        *31.9 GB    disk2
       1:                 DOS_FAT_32 UNTITLED                31.9 GB    disk2s1
    

PS Я использую OS X 10.11.

Обновление 22.03.2016 . Догадаться. Я перезапустил и lsofи fuserсверху, используя sudo, и, наконец, добрался до сути вопроса:

$ sudo fuser /Volumes/UNTITLED/
/Volumes/UNTITLED/: 62 282
$

А также:

$ sudo lsof /Volumes/UNTITLED/
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF      NODE NAME
mds        62 root    8r   DIR    1,6    32768         2 /Volumes/UNTITLED
mds        62 root   22r   DIR    1,6    32768         2 /Volumes/UNTITLED
mds        62 root   23r   DIR    1,6    32768        10 /Volumes/UNTITLED/.Spotlight-V100/Store-V2/A2D41CCB-48CC-45F3-B8D6-F3B383D91AAD
mds        62 root   25u   REG    1,6        0 999999999 /Volumes/UNTITLED/.Spotlight-V100/Store-V2/A2D41CCB-48CC-45F3-B8D6-F3B383D91AAD/journalExclusion
mds_store 282 root  txt    REG    1,6     3277        17 /Volumes/UNTITLED/.Spotlight-V100/Store-V2/A2D41CCB-48CC-45F3-B8D6-F3B383D91AAD/0.indexGroups
mds_store 282 root  txt    REG    1,6        8        23 /Volumes/UNTITLED/.Spotlight-V100/Store-V2/A2D41CCB-48CC-45F3-B8D6-F3B383D91AAD/0.indexCompactDirectory
mds_store 282 root  txt    REG    1,6      312        19 /Volumes/UNTITLED/.Spotlight-V100/Store-V2/A2D41CCB-48CC-45F3-B8D6-F3B383D91AAD/0.indexTermIds
mds_store 282 root  txt    REG    1,6     3277        29 /Volumes/UNTITLED/.Spotlight-V100/Store-V2/A2D41CCB-48CC-45F3-B8D6-F3B383D91AAD/live.0.indexGroups
mds_store 282 root  txt    REG    1,6     1024        35 /Volumes/UNTITLED/.Spotlight-V100/Store-V2/A2D41CCB-48CC-45F3-B8D6-F3B383D91AAD/live.0.indexCompactDirectory
mds_store 282 root  txt    REG    1,6      312        21 /Volumes/UNTITLED/.Spotlight-V100/Store-V2/A2D41CCB-48CC-45F3-B8D6-F3B383D91AAD/0.indexPositionTable
mds_store 282 root  txt    REG    1,6     8192        31 /Volumes/UNTITLED/.Spotlight-V100/Store-V2/A2D41CCB-48CC-45F3-B8D6-F3B383D91AAD/live.0.indexTermIds
mds_store 282 root  txt    REG    1,6     2056        22 /Volumes/UNTITLED/.Spotlight-V100/Store-V2/A2D41CCB-48CC-45F3-B8D6-F3B383D91AAD/0.indexDirectory
mds_store 282 root  txt    REG    1,6     8192        33 /Volumes/UNTITLED/.Spotlight-V100/Store-V2/A2D41CCB-48CC-45F3-B8D6-F3B383D91AAD/live.0.indexPositionTable
mds_store 282 root  txt    REG    1,6     8224        34 /Volumes/UNTITLED/.Spotlight-V100/Store-V2/A2D41CCB-48CC-45F3-B8D6-F3B383D91AAD/live.0.indexDirectory
mds_store 282 root  txt    REG    1,6       16        16 /Volumes/UNTITLED/.Spotlight-V100/Store-V2/A2D41CCB-48CC-45F3-B8D6-F3B383D91AAD/0.indexIds
mds_store 282 root  txt    REG    1,6    65536        48 /Volumes/UNTITLED/.Spotlight-V100/Store-V2/A2D41CCB-48CC-45F3-B8D6-F3B383D91AAD/reverseDirectoryStore
mds_store 282 root  txt    REG    1,6      704        24 /Volumes/UNTITLED/.Spotlight-V100/Store-V2/A2D41CCB-48CC-45F3-B8D6-F3B383D91AAD/0.indexArrays
mds_store 282 root  txt    REG    1,6    65536        26 /Volumes/UNTITLED/.Spotlight-V100/Store-V2/A2D41CCB-48CC-45F3-B8D6-F3B383D91AAD/0.directoryStoreFile
mds_store 282 root  txt    REG    1,6    32768        28 /Volumes/UNTITLED/.Spotlight-V100/Store-V2/A2D41CCB-48CC-45F3-B8D6-F3B383D91AAD/live.0.indexIds
mds_store 282 root  txt    REG    1,6    65536        36 /Volumes/UNTITLED/.Spotlight-V100/Store-V2/A2D41CCB-48CC-45F3-B8D6-F3B383D91AAD/live.0.indexArrays
mds_store 282 root  txt    REG    1,6    65536        38 /Volumes/UNTITLED/.Spotlight-V100/Store-V2/A2D41CCB-48CC-45F3-B8D6-F3B383D91AAD/live.0.directoryStoreFile
mds_store 282 root    5r   DIR    1,6    32768        10 /Volumes/UNTITLED/.Spotlight-V100/Store-V2/A2D41CCB-48CC-45F3-B8D6-F3B383D91AAD
mds_store 282 root   17u   REG    1,6     8192        12 /Volumes/UNTITLED/.Spotlight-V100/Store-V2/A2D41CCB-48CC-45F3-B8D6-F3B383D91AAD/psid.db
mds_store 282 root   32r   DIR    1,6    32768        10 /Volumes/UNTITLED/.Spotlight-V100/Store-V2/A2D41CCB-48CC-45F3-B8D6-F3B383D91AAD
mds_store 282 root   41u   REG    1,6       28        15 /Volumes/UNTITLED/.Spotlight-V100/Store-V2/A2D41CCB-48CC-45F3-B8D6-F3B383D91AAD/indexState
$

Из вышесказанного легко понять , что процессы называют mdsи mds_storeсоздали и держит большое количество файлов на томе.

gmile
источник
Используйте of=/dev/rdisk2это намного быстрее, и не так обременительно для вашей SD-карты.
Руи Ф Рибейро
Привет @RuiFRibeiro! Да, это имеет смысл, я забыл, rdiskкогда писал это.
gmile
Устройство занято, потому что оно автоматически смонтировано ...; Вы отключите его, сделайте свой dd, и он снова будет автоматически смонтирован, как только dd завершит работу.
Руи Ф Рибейро
@RuiFRibeiro Я знаю, в этом есть смысл ... Но есть ли какие-то другие признаки, помимо того, что они видят /Volumes/UNTITLEDи знают, что они установлены автоматически? Например, какие-то журналы, или лучше какой-нибудь процесс, отвечающий за взятие устройства?
gmile
1
@RuiFRibeiro оказывается, что в настоящее время есть 2 процесса, которые держат подключенный том. То, что я пропустил, работало lsofи fuserс привилегиями root. После работы с обоими sudoя понял, что процессы вызвали mdsи mds_storeсоздали более десятка файлов на томе.
gmile

Ответы:

51

Apple Court, Apple, правила. Попробуй diskutil:

$ diskutil list
...

# if mounted somewhere
$ sudo diskutil unmount $device

# all the partitions (there's also a "force" option, see the manual)
$ sudo diskutil unmountDisk $device

# remember zip drives? this would launch them. good times!
$ sudo diskutil eject $device

(В случае образа диска, hdiutilкоманда также может быть интересна. Вы также можете щелкнуть в Disk Utility.app.)

thrig
источник
Привет @ thrig, спасибо. Да, я могу размонтировать с помощью diskutil, никаких проблем с этим. Здесь я учусь распознавать проблемы в системе, говоря «да» любому предупреждению, которое я могу заметить. Я хочу знать, почему в первую очередь происходит «Ресурс занят», а не как от него избавиться. Какой именно процесс в ОС делает это возможным?
gmile
@ Насколько известно, ядро ​​блокирует занятые устройства, поэтому вам нужно размонтировать и извлечь любой раздел и образ, чтобы снять блокировку ядра.
три
о, это интересно Я собираюсь в Google для блокировки ядра сейчас. Может быть, у вас есть хороший ресурс, где я мог бы прочитать об этом?
gmile
9

Помог размонтирование подразделов

/dev/disk2
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     FDisk_partition_scheme                        *8.0 GB     disk2
   1:             Windows_FAT_16 wr_usb_efi              134.2 MB   disk2s1
   2:                      Linux                         1.1 GB     disk2s2
vgsprasad-mbp:~ vgsprasad$ diskutil umount /dev/disk2s1
Volume wr_usb_efi on disk2s1 unmounted
vgsprasad-mbp:~ vgsprasad$ diskutil umount /dev/disk2s2
disk2s2 was already unmounted
Shivaprasad
источник
3
Помимо пропущенного форматирования, OP специально сказал: «Все в Интернете говорят, что мне нужно сначала размонтировать диск. Конечно, можно сделать это и двигаться дальше. Но я хочу понять, почему / что именно в OS X делает устройство занятым? "
Джефф Шаллер
@Jeff Я столкнулся с той же проблемой, что и gmile, я собирался записать .iso на USB-накопитель, и dd вернулся dd: /dev/disk9: Resource busy. Когда я отключил diskutil umount /dev/disk9s1устройство, устройство исчезло с рабочего стола, но оно /dev/disk9все еще было подключено, поэтому оно ddне могло работать должным образом. Таким образом, Mac OSX занимал устройство, создавая ярлык для внутренней файловой системы USB-накопителя.
Густав