Espelli unità USB / comando di espulsione


55

So che il ejectcomando può essere utilizzato per espellere quasi tutti i componenti hardware collegati, ma può essere utilizzato per espellere le unità USB?

È possibile espellere unità USB e HDD esterni con il ejectcomando?


3
Correlati: l'opposto di eject /dev/sdXè sg_start -s /dev/sdX(dal sg3_utilspacchetto), entrambi utilizzano i comandi SCSI per inviare al dispositivo.
Yeti,

Risposte:


15

No. Né devono esserlo; ejectviene utilizzato per aprire le unità ottiche, dove non è possibile estrarre direttamente il supporto.

Lo smontaggio è sufficiente per USB / eSATA / ecc. dispositivi di memoria.


Hmm, ho visto espellere hdd come in / dev / sda da qualche parte. Immagino che il riferimento fosse sbagliato allora.
Joe Barr,

Puoi farlo, ma di solito non fa molto se non altro.
Ignacio Vazquez-Abrams,

1
Questo presuppone che il dispositivo sia montato in primo luogo e che porti con sé un altro grande insieme di presupposti (ha un filesystem che puoi leggere, per uno). Immagina che stai cancellando un sacco di unità esterne: probabilmente non verranno mai montate. espellere è la cosa giusta da usare.
James Moore,

1
Se non sono mai sicuro, syncprima di
tirarlo

Grande, grasso ATTENZIONE: questo NON è del tutto vero. In caso contrario eject, il driver del dispositivo USB sottostante potrebbe ancora (provare a) scrivere DOPO che umountè tornato. Questo può essere visto chiaramente se l'unità ha un LED di stato. Tirare la chiavetta USB subito dopo il umounttermine è RICETTA PER DISASTER.
ZioByte,

77

Sì. Per esempio:

sudo eject /dev/sda

Altre risposte qui che indicano che è necessario l'hardware di espulsione meccanica non sono corrette.

Lo smontaggio non è la stessa cosa dell'espulsione.

  1. Se si smonta un volume, è possibile rimontarlo immediatamente, poiché il dispositivo sottostante è ancora disponibile. In alcune situazioni, ciò potrebbe presentare un rischio per la sicurezza. Espellendo il dispositivo, solo un ripristino del sottosistema USB (ad esempio un riavvio) ricaricherà il dispositivo.
  2. Espellendo il dispositivo, si disabilita effettivamente qualsiasi ulteriore accesso al dispositivo. Solo un ripristino del sottosistema USB (ad esempio un riavvio) ricaricherà il dispositivo. Altrimenti, è necessario scollegare fisicamente il dispositivo USB e ricollegarlo per poter accedere nuovamente.
  3. Prima di espellere, questo comando smonta tutti i volumi sul dispositivo che sono stati montati.
  4. Se i volumi sono in uso, questo comando fallirà come con lo smontaggio, ad eccezione del fatto che alcuni volumi potrebbero essere smontati e alcuni volumi potrebbero rimanere montati.

1
Ho anche dovuto usare sudoper terminare questo comando (tutto ciò che avrebbe fatto era smontare l'unità prima di dire che non era in grado di aprire il file). Oltre a ciò, risposta utile.
PIL 2

Risposta sottovalutata in questa discussione. Basta guardare una chiavetta USB montata su FAT32 e notare come lo smontaggio e l'espulsione hanno un mondo di differenza solo nel file explorer (ovvero: nautilus) da solo. Una semplice clip Sansa aiuterebbe anche a dimostrarlo.
Cloud

Il dispositivo è ancora presente durante l'esecuzione di lsusb. Quindi non è necessario ripristinare l'intero sottosistema USB. È sufficiente solo il dispositivo. Puoi usare usbreset per fare questo github.com/jkulesza/usbreset github.com/CWempe/usbreset I file usbreset.c sono identici in entrambi i progetti,
Hannes

Come faccio a sapere che "sda" è quello giusto? Posso mappare sda, sdb, ecc. Ai nomi dei dispositivi reali?
Jürgen K.,

38

ejectfunzionerà, ma in realtà non "completerà il lavoro" per quanto riguarda le unità rotanti USB .

Il modo migliore per scollegare un disco rigido esterno USB, dopo un corretto smontaggio , è:

udisks --detach /dev/sdb

Questo di solito provoca il rallentamento dell'unità.

Proprio l' attuale implementazione :

  • invia il comando SCSI sync-cache,
  • invia il comando di arresto SCSI,
  • separa il driver del kernel di archiviazione USB,
  • sospende il dispositivo USB (alimentazione),
  • disabilita / rimuove logicamente dalla sua porta USB.

Questo processo è vicino alla procedura manuale che è suggerita qui . La risposta iniziale era su askubuntu .

EDIT: Inoltre, come sottolinea g.rocket , questo comando può essere equivalente:

udisksctl power-off -b /dev/sdb

Sul mio ubuntu onyl udisksctlche non ha --detachotion è disponibile. Cosa fare in questo caso? grazie.
Wakan Tanka,

@WakanTanka si installa udisks.
Totor

Come posso installare udisks? Non è sul mio sistema. Ho trovato il pacchetto udisks2, ma non è stato reso disponibile udiskso udisks2disponibile.
Martin Thoma,

5
@WakanTanka udisksctl power-off -b /dev/sdwhateversembra fare la stessa cosa.
g.rocket,

@ risposta g.rocket aggiornata di conseguenza. Grazie.
Totor,

8

Passaggi manuali per smontare disco / dev / sdb (richiede sudo):

echo 'offline' > /sys/block/sdb/device/state
echo '1' > /sys/block/sdb/device/delete

Ciò spegnerà completamente il dispositivo e lo staccherà dal sistema. Non verrà più rilevato fino a quando non viene disconnesso e ricollegato.


2
FWIW questa è l'unica cosa che funziona per me in un dom0 Xen con una base USB esterna: i comandi di espulsione e udisks hanno dato errori.
GS - Scusati con Monica il

1
Lo stavo cercando, sono in modalità emergenza dracut e non ho accesso a nessuna delle altre funzioni. Grazie!
Nassiel,

hdparm -Yè utile anche per le unità SATA / IDE.
Walf

6

Se leggi attentamente la pagina man di espulsione (1) puoi vedere che ci sono 4 metodi di espulsione:

   -r   This  option specifies that the drive should be ejected using a CDROM
        eject command.

   -s   This option specifies that the drive should  be  ejected  using  SCSI
        commands.

   -f   This option specifies that the drive should be ejected using a remov‐
        able floppy disk eject command.

   -q   This option specifies that the drive should be ejected using  a  tape
        drive offline command.

Quando si chiama espulsione su HDD / SCSI, emette il ioctl(fd, SG_IO, (void *)&io_hdr);comando (copia da eject.cfonti).

Ciò equivale alla rimozione sicura del dispositivo in MS Windows o MaxOSX.

Per alcuni dispositivi questo ha un significato speciale. Ad esempio Kindle 3 dopo che il comando di espulsione è stato spostato in modalità di ricarica e consente la navigazione sul dispositivo, mentre prima lo schermo era bloccato.

Un'altra utility fa la stessa cosa, in questo modo

scsi-spin --force --down /dev/sda

3

"Espulsione" non ha alcun significato per l'hardware senza un vassoio o un altro meccanismo di caricamento (suppongo che funzioni anche con le unità nastro).

Tuttavia, il test con un'unità flash USB esterna indica che ejectfunziona in modo molto simile umount: con l'effetto collaterale di far scomparire i nodi del dispositivo, ad es

% ls  /dev/sdc*
/dev/sdc  /dev/sdc1
% sudo eject /dev/sdc
% ls  /dev/sdc*
/dev/sdc

Si noti che /dev/sdc1è scomparso.


1
Mai provato con nastri ( mt rewofflè più conveniente perché riavvolge anche), ma fa il lavoro con le unità floppy motorizzati come quelli trovati su vecchi Mac e workstation Sun.
Alexios

@Alexios interessante.
Renan,

3

Nella riga di comando osx è necessario utilizzare diskutil dove LABEL è l'etichetta dell'unità USB.

diskutil eject /Volumes/<LABEL>

2

udisks --detach /dev/sdXdove (X) è l'ultima lettera del dispositivo USB. Funziona bene su qualsiasi sistema Linux.


La tua risposta è ok, anche se forse è un po 'breve. Vorrei suggerire di elaborare di più: cosa fa questo comando, come, perché è questo ciò che suggerisci, ecc.
user259412

0

OK proverò a spiegarlo meglio:

Il comando udisks rimuove e spegne completamente qualsiasi dispositivo USB montato o collegato nel comando di smontaggio del sistema, basta smontare la partizione, ad esempio: dev / sdb1 o qualsiasi altra cosa, ma l'USB è ancora presente nel sistema.

Quindi non è lo stesso smontaggio, espulsione e distacco

udisks = spegni l'USB

umount = basta smontare la partizione e non l'intero pendrive

eject = uguale o molto vicino al comando umount

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.