it-swarm-eu.dev

Vysunout příkaz USB / vysunout

Vím, že příkaz eject lze použít k vysunutí téměř jakékoli připojené hardwarové součásti, ale lze ji použít k vysunutí jednotek USB?

Je možné vysunout USB disky a externí HDD pomocí příkazu eject?

58
Joe Barr

Ne. Také nemusí být; eject se používá k otevírání optických jednotek, kde nelze média přímo vytáhnout.

Odpojení je dostatečné pro USB/eSATA/atd. paměťová zařízení.

Ano. Například:

Sudo eject /dev/sda

Další odpovědi, které naznačují, že potřebujete mechanický vyhazovací hardware, jsou nesprávné.

Odpojení není totéž jako vysunutí.

  1. Pokud odpojíte svazek, můžete jej okamžitě připojit zpět, protože základní zařízení je stále k dispozici. V některých situacích by to mohlo představovat bezpečnostní riziko. Vysunutím zařízení obnoví zařízení pouze resetování subsystému USB (např. Restartování). .
  2. Vysunutím zařízení účinně deaktivujete jakýkoli další přístup k zařízení. Pouze reset subsystému USB (např. Restartování) zařízení načte znovu. V opačném případě musíte zařízení USB fyzicky odpojit a znovu připojit, abyste k němu měli opět přístup.
  3. Před vysunutím tento příkaz odpojí všechny svazky na připojeném zařízení.
  4. Pokud se používají svazky, tento příkaz selže jako u odpojení, s výjimkou toho, že některé svazky mohou být odpojeny a některé svazky mohou zůstat připojené.
83
danorton

eject bude fungovat, ale ve skutečnosti nebude „dokončovat úlohu“, pokud jde o USB rotující disky.

Nejlepší způsob, jak odpojit externí pevný disk USB, po správném odpojení, je:

udisks --detach /dev/sdb

Obvykle to způsobí, že se pohon půvabně roztočí.

Přesně, aktuální implementace :

  • pošle příkaz SCSI sync-cache,
  • pošle příkaz SCSI stop,
  • uvolní ovladač jádra usb-storage,
  • pozastaví zařízení USB (napájení),
  • logicky jej deaktivuje/odebere z USB portu.

Tento proces se blíží ručnímu postupu, který je navrhován zde . Počáteční odpověď byla na askubunt .

EDIT: Také, jak g.rocket upozorňuje, tento příkaz může být ekvivalentní:

udisksctl power-off -b /dev/sdb
42
Totor

Manuální kroky pro odpojení disku/dev/sdb (vyžaduje Sudo):

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

Tím se zařízení úplně vypne a odpojí od systému. Nebude znovu detekována, dokud nebude odpojena a znovu připojena.

12
Tony George

Pokud si pečlivě přečtete vysunutí (1) manuálovou stránku, uvidíte, že existují 4 způsoby vysunutí:

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

Když voláte eject na HDD/SCSI, vydá příkaz ioctl(fd, SG_IO, (void *)&io_hdr); (kopie ze zdrojů eject.c).

To je stejné jako při bezpečném odebrání zařízení v MS Windows nebo MaxOSX.

U některých zařízení to má zvláštní význam. Například Kindle 3 po eject povel byl přesunut do režimu nabíjení a umožňuje procházení na zařízení, zatímco obrazovka byla uzamčena.

Další nástroje dělají totéž

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

V příkazovém řádku osx byste měli použít diskusil kde [~ # ~] štítek [~ # ~] je štítek vašeho usb řídit.

diskutil eject /Volumes/<LABEL>
3
efesaid

„Vysunutí“ nemá žádný význam pro hardware bez zásobníku nebo jiného zaváděcího mechanismu (předpokládám, že pracuje také s páskovými jednotkami).

Testování s externí jednotkou USB Flash však ukazuje, že eject funguje podobně jako umount - s vedlejším účinkem, který způsobuje, že uzly zařízení zmizí, např.

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

Všimněte si, že /dev/sdc1 zmizel.

3
Renan

udisks --detach /dev/sdX kde (X) je poslední písmeno vašeho zařízení USB. Funguje to dobře na každém linuxovém systému.

2
victorx66

Dobře, pokusím se to vysvětlit lépe:

příkaz udisks úplně odebere a vypne všechna zařízení usb připojená nebo připojená k příkazu unmount systému odpojte oddíl, tj: dev/sdb1 nebo cokoli jiného, ​​ale usb je v systému stále přítomen.

Není to tedy stejné odpojení, vysunutí a odpojení

udisks = vypnout USB

umount = jen odpojit oddíl, ne celý pendrive

eject = stejný nebo velmi blízký příkaz umount

0
victorx66