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
?
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í.
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 :
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
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.
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
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>
„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.
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.
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