Keluarkan drive USB / perintah eject

55

Saya tahu bahwa ejectperintah itu dapat digunakan untuk mengeluarkan hampir semua komponen perangkat keras yang terpasang, tetapi dapatkah itu digunakan untuk mengeluarkan drive USB?

Apakah mungkin untuk mengeluarkan drive USB dan HDD eksternal dengan ejectperintah?

Joe Barr
sumber
3
Terkait: kebalikan dari eject /dev/sdXadalah sg_start -s /dev/sdX(dari sg3_utilspaket), keduanya menggunakan perintah SCSI untuk mengirim ke perangkat.
Yeti

Jawaban:

15

Tidak. Mereka juga tidak perlu; ejectdigunakan untuk membuka drive optik, di mana orang tidak dapat menarik media dari langsung.

Melepas cukup untuk USB / eSATA / dll. perangkat penyimpanan.

Ignacio Vazquez-Abrams
sumber
Hmm, saya melihat eject hdd di / dev / sda di suatu tempat. Saya kira referensi itu salah saat itu.
Joe Barr
Anda dapat melakukannya, tetapi biasanya tidak banyak membantu.
Ignacio Vazquez-Abrams
1
Ini mengasumsikan bahwa perangkat sudah terpasang di tempat pertama, dan yang membawa asumsi besar lainnya (ada sistem file yang dapat Anda baca, untuk satu). Bayangkan Anda menghapus banyak drive eksternal - drive tersebut mungkin tidak pernah dipasang. eject adalah hal yang tepat untuk digunakan.
James Moore
1
Jika saya tidak yakin, saya syncsebelum mencabutnya
EkriirkE
PERINGATAN besar, gemuk: Ini BUKAN sepenuhnya benar. Jika Anda tidak melakukannya eject, Device Driver USB mungkin masih (coba) tulis SETELAH umounttelah kembali. Ini dapat dilihat dengan jelas jika drive memiliki LED status. Yanking stik USB tepat setelah umountberakhir adalah RESEP UNTUK BENCANA.
ZioByte
77

Iya. Sebagai contoh:

sudo eject /dev/sda

Jawaban lain di sini yang menunjukkan bahwa Anda memerlukan perangkat keras ejeksi mekanik salah.

Melepas ikatan bukanlah hal yang sama dengan mengeluarkan.

  1. Jika Anda melepas volume, Anda dapat segera memasangnya kembali, karena perangkat yang mendasarinya masih tersedia. Dalam beberapa situasi, ini dapat menimbulkan risiko keamanan. Dengan mengeluarkan perangkat, hanya pengaturan ulang subsistem USB (mis. Reboot) yang akan memuat ulang perangkat.
  2. Dengan mengeluarkan perangkat, Anda secara efektif menonaktifkan akses lebih lanjut ke perangkat. Hanya pengaturan ulang subsistem USB (mis. Reboot) yang akan memuat ulang perangkat. Jika tidak, Anda harus secara fisik melepas perangkat USB dan menghubungkannya kembali untuk mengaksesnya lagi.
  3. Sebelum mengeluarkan, perintah ini akan melepas semua volume pada perangkat yang dipasang.
  4. Jika volume sedang digunakan, perintah ini akan gagal seperti dengan unmount, kecuali bahwa beberapa volume mungkin dilepas dan beberapa volume mungkin tetap dipasang.
danorton
sumber
1
Saya juga harus menggunakan sudountuk mendapatkan perintah ini untuk menyelesaikan (semua itu akan lakukan unmount drive sebelum mengatakan itu tidak dapat membuka file). Selain itu, jawaban yang bermanfaat.
GDP2
Jawaban yang kurang dihargai di utas ini. Lihat saja thumb drive yang dipasang FAT32, dan perhatikan bagaimana unmount dan mengeluarkan memiliki dunia yang berbeda hanya dalam file explorer (yaitu: nautilus) saja. Klip Sansa sederhana juga akan membantu menunjukkan hal ini.
Cloud
Perangkat masih ada saat menjalankan lsusb. Jadi Anda tidak perlu mengatur ulang seluruh USB-Subsystem. Cukup dengan perangkat saja. Anda dapat menggunakan usbreset untuk melakukan ini github.com/jkulesza/usbreset github.com/CWempe/usbreset File usbreset.c identik di kedua proyek,
Hannes
Bagaimana saya tahu bahwa "sda" adalah yang benar? Bisakah saya memetakan sda, sdb, dll ke nama perangkat asli?
Jürgen K.
38

ejectakan bekerja, tetapi tidak akan benar-benar "menyelesaikan pekerjaan" berkenaan dengan drive berputar USB .

Cara terbaik untuk mencabut hard drive eksternal USB, setelah dilepas dengan benar , adalah:

udisks --detach /dev/sdb

Ini biasanya menyebabkan drive berputar dengan anggun.

Tepatnya, implementasi saat ini :

  • mengirim perintah SCSI sync-cache,
  • mengirim perintah berhenti SCSI,
  • melepaskan ikatan driver kernel usb-storage,
  • menunda perangkat USB (daya),
  • secara logis menonaktifkan / menghapusnya dari port USB-nya.

Proses ini dekat dengan prosedur manual yang disarankan di sini . Jawaban awal ada di askubuntu .

EDIT: Juga, seperti yang ditunjukkan g.rocket , perintah ini mungkin sama:

udisksctl power-off -b /dev/sdb
Totor
sumber
Di ubuntu onyl saya udisksctlyang tidak memiliki --detachotion tersedia. Apa yang harus dilakukan dalam kasus ini? Terima kasih.
Wakan Tanka
@WakanTanka Anda instal udisks.
Totor
Bagaimana saya bisa menginstal udisks? Itu tidak ada di sistem saya. Saya menemukan paket udisks2, tetapi itu tidak membuat udisksatau udisks2 tersedia.
Martin Thoma
5
@WakanTanka udisksctl power-off -b /dev/sdwhatevertampaknya melakukan hal yang sama.
g.rocket
@ g. jawaban keranjang diperbarui sesuai. Terima kasih.
Totor
8

Langkah manual untuk melepas disk / dev / sdb (Memerlukan sudo):

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

Ini benar-benar akan mematikan perangkat dan melepaskannya dari sistem. Itu tidak akan terdeteksi lagi sampai terputus dan dipasang kembali.

Tony George
sumber
2
FWIW ini adalah satu-satunya hal yang bekerja untuk saya dalam dom Xen dengan USB cradle eksternal - perintah eject dan udisks memberi kesalahan.
GS - Minta maaf kepada Monica
1
Saya sedang mencari ini, saya dalam mode darurat dracut dan saya tidak memiliki akses ke salah satu fungsi lainnya. Terima kasih!
Nassiel
hdparm -Yjuga berguna untuk drive SATA / IDE.
Walf
6

Jika Anda membaca halaman manual eject (1) dengan cermat, Anda dapat melihat bahwa ada 4 metode untuk mengeluarkan:

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

Ketika Anda memanggil eject pada HDD / SCSI itu mengeluarkan ioctl(fd, SG_IO, (void *)&io_hdr);perintah (salin dari eject.csumber).

Ini sama dengan Anda menghapus perangkat dengan aman di MS Windows atau MaxOSX.

Untuk beberapa perangkat ini memiliki mean khusus. Misalnya Kindle 3 setelah perintah eject telah dipindahkan ke mode pengisian daya dan memungkinkan penjelajahan di perangkat, sementara sebelum layar dikunci.

Utilitas lain melakukan hal yang sama, seperti ini

scsi-spin --force --down /dev/sda
gavenkoa
sumber
3

"Mengeluarkan" tidak memiliki arti untuk perangkat keras tanpa baki atau mekanisme pemuatan lainnya (saya menganggap itu bekerja dengan tape drive juga).

Namun, pengujian dengan USB flash drive eksternal menunjukkan bahwa itu ejectberfungsi seperti umount- dengan efek samping membuat node perangkat hilang, misalnya

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

Catatan yang /dev/sdc1telah hilang.

Renan
sumber
1
Pernah mencobanya dengan kaset ( mt rewoffllebih nyaman karena juga menggulung), tetapi tidak bekerja dengan drive floppy bermotor seperti yang ditemukan pada Mac lama dan Sun workstation.
Alexios
@ Alexios menarik.
Renan
3

Pada baris perintah osx Anda harus menggunakan diskutil di mana LABEL adalah label drive usb Anda.

diskutil eject /Volumes/<LABEL>
efesaid
sumber
2

udisks --detach /dev/sdXdi mana (X) adalah huruf terakhir dari perangkat usb Anda. Ini berfungsi dengan baik pada sistem linux apa pun.

victorx66
sumber
Jawaban Anda baik-baik saja, meskipun mungkin agak pendek. Saya akan menyarankan untuk menguraikan lebih lanjut: apa yang dilakukan perintah ini, bagaimana, mengapa ini yang Anda sarankan, dll.
user259412
0

OK saya akan mencoba menjelaskan ini dengan lebih baik:

perintah udisks benar-benar menghapus dan mematikan perangkat usb yang terpasang atau terpasang di sistem unmount perintah hanya unmount partisi yaitu: dev / sdb1 atau apa pun kecuali usb masih ada dalam sistem.

Jadi bukan unmount yang sama, keluarkan dan lepas

udisks = matikan usb

umount = cukup unmount partisi bukan keseluruhan pendrive

eject = sama atau sangat dekat dengan perintah umount

victorx66
sumber