Запуск дд. Чому ресурс зайнятий?


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створили і тримає велику кількість файлів на томі.


Використовуйте of=/dev/rdisk2його набагато швидше і не так оподатковуйте вашу SD-карту.
Rui F Ribeiro

Привіт @RuiFRibeiro! Так, це має повний сенс, я забув про це, rdiskколи писав це.
gmile

Пристрій зайнятий, тому що він автоматизований ...; ви це зробите, зробіть свій дд, і він знову автоматизується, як тільки ДД закінчиться.
Rui F Ribeiro

@RuiFRibeiro Я знаю, це має сенс ... Але чи є якась інша вказівка, окрім того, щоб бачити /Volumes/UNTITLEDі знати, що це автоматизовано? Мовляв, якісь журнали, чи краще якийсь процес, відповідальний за зняття пристрою?
gmile

1
@RuiFRibeiro виявляється, в даний час є два процеси, що містять змонтований об'єм. Те, що я пропустив, було запущено lsofі fuserз привілеями root. Після запуску обох sudo, я зрозумів, що процеси викликали mdsі mds_storeстворили понад десяток файлів на томі.
gmile

Відповіді:


51

Apple суд, правила 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, дякую. Так, я можу відключити користування 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

3
окрім відсутнього форматування, ОП спеціально сказав: "Усі в Інтернеті кажуть, що мені потрібно спочатку відключити диск. Звичайно, можна це зробити і рухатись далі. Але я хочу зрозуміти, чому / що саме в OS X робить пристрій зайнятим? "
Jeff Schaller

@Jeff Я зіткнувся з тією ж проблемою, що і gmile, я мав на меті написати .iso на USB-накопичувач, і dd повернувся dd: /dev/disk9: Resource busy. Коли я відключився diskutil umount /dev/disk9s1, пристрій зник з робочого столу, але /dev/disk9він все ще був змонтований, тому ddне міг працювати як слід. Таким чином, Mac OSX тримав пристрій зайнятим, створюючи ярлик до внутрішньої файлової системи USB-накопичувача.
Густав
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.