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.