Esecuzione di dd. Perché la risorsa è occupata?


32

Ho appena formattato la scheda microSD e vorrei eseguire un ddcomando. Sfortunatamente il ddcomando fallisce:

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

Tutti su Internet dicono che prima devo smontare il disco. Certo, puoi farlo e andare avanti. Ma voglio capire perché / cosa esattamente in OS X sta occupando il dispositivo ? Come posso diagnosticare questo?

Finora ho provato:

  1. Elenco dei file aperti:

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

    Anche:

    $ lsof /Volumes/UNTITLED
    $
    
  2. Elenco degli utenti che lavorano al file:

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

    Anche:

    $ fuser -u /Volumes/UNTITLED
    $
    
  3. Controlla i messaggi di sistema:

    $ sudo dmesg | grep disk
    $
    

    Anche:

    $ sudo dmesg | grep /Volumes/UNTITLED
    $
    

Il mio ambiente

  1. Sistema operativo:

    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. Informazioni sulla mia 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 Sto usando OS X 10.11.

Aggiornamento 22/03/2016 . Capito. Ho eseguito di nuovo il lsofe fuserdall'alto usando sudo, e finalmente sono arrivato alla fine del problema:

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

E:

$ 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
$

Da quanto sopra è facile vedere che i processi hanno chiamato mdse mds_storecreato e contengono molti file sul volume.


Usarlo of=/dev/rdisk2è molto più veloce e non è così tassativo per la tua scheda SD.
— Rui F Ribeiro,

Ciao @RuiFRibeiro! Sì, ha perfettamente senso, mi sono dimenticato di rdiskquando ho scritto questo.
— gmile,

Il dispositivo è occupato perché è montato automaticamente ...; lo smontate, fate il vostro dd, e verrà montato di nuovo automaticamente non appena termina il dd.
— Rui F Ribeiro,

@RuiFRibeiro Lo so, ha senso ... Ma c'è qualche altra indicazione, oltre a vedere /Volumes/UNTITLEDe sapere che è montato automaticamente? Ad esempio, alcuni registri o qualche migliore processo responsabile per prendere il dispositivo?
— gmile,

1
@RuiFRibeiro risulta che ci sono 2 processi che attualmente tengono il volume montato. Quello che mi mancava era correre lsofe fusercon i privilegi di root. Dopo aver eseguito entrambi con sudo, ho immaginato i processi chiamati mdse mds_storecreati su una dozzina di file sul volume.
— gmile,

Risposte:


51

Corte di Apple, regole di Apple. Prova 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

(Nel caso di un'immagine del disco, anche il hdiutilcomando può essere interessante. Puoi anche fare clic su in Disk Utility.app.)


Ciao @thrig, grazie. Sì, sono in grado di smontare utilizzando diskutil, nessun problema. Quello che sto facendo qui è che sto imparando come identificare i problemi nel sistema dicendo "Sì" a qualsiasi avviso che posso individuare. Voglio sapere perché "Risorsa occupata" sta accadendo in primo luogo, non come liberarsene. Quale processo esatto nel sistema operativo sta facendo accadere questo?
— gmile,

@gmile il kernel, per quanto ne so, blocca i dispositivi occupati, quindi è necessario smontare ed espellere qualsiasi partizione e immagine per rimuovere quel blocco del kernel.
— thrig

oh, questo è interessante. Ora vado su Google per il blocco del kernel. Forse hai qualche buona risorsa nella tua mente dove potrei leggerne?
— gmile,

9

Lo smontaggio delle sotto-partizioni ha aiutato

/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
a parte la mancata formattazione, l'OP ha detto specificamente "Tutti su Internet dicono che prima devo smontare il disco. Certo, posso farlo e andare avanti. Ma voglio capire perché / cosa esattamente in OS X sta rendendo occupato il dispositivo? "
— Jeff Schaller

@Jeff Mi sono imbattuto nello stesso problema di gmile, stavo mirando a scrivere un .iso su una chiavetta USB e sono tornato dd: /dev/disk9: Resource busy. Quando ho smontato con diskutil umount /dev/disk9s1, il dispositivo è scomparso dal desktop, ma /dev/disk9era ancora montato quindi ddnon poteva funzionare come dovrebbe. Quindi Mac OSX ha tenuto occupato il dispositivo creando una scorciatoia per il filesystem interno della chiavetta USB.
— Gustav,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.