Виймання USB-накопичувачів / команда виймання


55

Я знаю, що ejectкоманду можна використовувати для вилучення майже будь-якого доданого апаратного компонента, але чи можна використовувати її для витягування USB-накопичувачів?

Чи можливо витягнути USB-накопичувачі та зовнішні жорсткі диски за допомогою ejectкоманди?


3
Пов'язаний: протилежність eject /dev/sdXIS sg_start -s /dev/sdXsg3_utilsпакета), обидва використовують SCSI - команди для відправки на пристрій.
Єті

Відповіді:


15

Ні. Вони також не повинні бути такими; ejectвикористовується для відкриття оптичних приводів, де неможливо витягнути носій безпосередньо.

Відключення достатньо для USB / eSATA / тощо. пристрої зберігання даних.


Гм, я десь бачив витягнути hdd як в / dev / sda. Напевно, тоді посилання було неправильним.
Джо Барр

Ви можете це зробити, але це зазвичай не дуже багато, якщо щось взагалі.
Ігнасіо Васкес-Абрамс

1
Це передбачає, що пристрій встановлено в першу чергу, і це виконує ще один великий набір припущень (у нього є файлова система, яку ви можете прочитати, для одного). Уявіть, що ви стираєте купу зовнішніх накопичувачів - вони, ймовірно, ніколи не встановлюються. eject - це правильна річ.
Джеймс Мур

1
Якщо я колись не впевнений, я syncперед тим, як
виграти

Великий, жирний ПОПЕРЕДЖЕННЯ: Це НЕ зовсім вірно. Якщо ви цього не зробите, ejectлежить в основі USB-драйвера пристрою (все ж таки, спробуйте) писати ПІСЛЯ umountповернувся. Це добре видно, якщо привід має світлодіодний статус. Язик USB-накопичувача одразу після umountприпинення дії - РЕЦЕПТУВАТИ ДЛЯ ВАЖИ.
ZioByte

77

Так. Наприклад:

sudo eject /dev/sda

Інші відповіді тут, які вказують на те, що вам потрібне механічне обладнання для викидання, є неправильними.

Демонтаж - це не те саме, що викидання.

  1. Якщо ви відключите гучність, ви можете негайно встановити її назад, оскільки базовий пристрій все ще доступний. У деяких ситуаціях це може становити загрозу безпеці. Виймаючи пристрій, лише скидання USB-підсистеми (наприклад, перезавантаження) перезавантажить пристрій.
  2. Виймаючи пристрій, ви фактично вимикаєте будь-який подальший доступ до пристрою. Лише скидання підсистеми USB (наприклад, перезавантаження) перезавантажить пристрій. В іншому випадку необхідно фізично відключити USB-пристрій та підключити його знову, щоб отримати доступ до нього знову.
  3. Перед тим, як вийняти, ця команда відключить усі томи на встановленому пристрої.
  4. Якщо використовуються томи, ця команда вийде з ладу, як і при відключенні, за винятком того, що деякі томи можуть бути відключені, а деякі томи можуть залишитися встановленими.

1
Мені також довелося використовувати sudoцю команду для завершення (все, що було б зробити, це відключити диск, перш ніж сказати, що не вдається відкрити файл). Окрім цього, корисна відповідь.
ВВП2

Відповідь у цій темі недостатньо оцінена. Подивіться на FAT32-накопичувач великого пальця, і помітите, як відключення та вилучення мають світ різниці лише в провіднику файлів (тобто: nautilus). Простий промокол Санси також допоможе продемонструвати це.
Хмара

Пристрій все ще присутній під час виконання lsusb. Таким чином, вам не доведеться скидати всю USB-підсистему. Просто пристрою достатньо. Ви можете використовувати usbreset, щоб зробити це github.com/jkulesza/usbreset github.com/CWempe/usbreset Файли usbreset.c в обох проектах однаково,
Hannes

Звідки я знаю, що "sda" є правильним? Чи можна зіставити sda, sdb тощо до реальних назв пристроїв?
Юрген К.

38

ejectбуде працювати, але насправді не "закінчить роботу" щодо USB- обертів .

Найкращий спосіб відключити зовнішній жорсткий диск USB після належного відключення - це:

udisks --detach /dev/sdb

Це, як правило, привід витончено обертається.

Точно поточна реалізація :

  • посилає команду SCSI-кешування синхронізації,
  • передає команду зупинки SCSI,
  • від’єднує драйвер ядра usb-storage,
  • призупиняє USB-пристрій (живлення),
  • логічно відключає / видаляє його зі свого порту USB.

Цей процес близький до ручної процедури, яка пропонується тут . Початкова відповідь була на askubuntu .

EDIT: Також, як вказує g.rocket , ця команда може бути еквівалентною:

udisksctl power-off -b /dev/sdb

На моєму ubuntu доступний оніл, udisksctlякий не має --detachвмісту. Що робити в цьому випадку? спасибі.
Вакан Танка

@WakanTanka ви встановите udisks.
Тотор

Як я можу встановити udisks? Це не в моїй системі. Я знайшов пакет udisks2, але це не робить udisksабо udisks2 доступні.
Мартін Тома

5
@WakanTanka, udisksctl power-off -b /dev/sdwhateverздається, робить те саме.
g.rocket

@ g.rocket відповідь оновлена ​​відповідно. Дякую.
Тотор

8

Етапи вручну для відключення диска / dev / sdb (Потрібен sudo):

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

Це повністю вимкне пристрій і від'єднає його від системи. Він не буде виявлений знову, поки він не буде відключений та знову приєднаний.


2
FWIW - це єдине, що працює для мене в Xen dom0 із зовнішньою колискою USB - команди вилучення та udisks давали помилки.
GS - Вибачте Моніку

1
Я шукав це, я перебуваю в режимі екстреної аварійної роботи і не маю доступу до жодної з інших функцій. Дякую!
Нассіель

hdparm -Yтакож зручний для накопичувачів SATA / IDE.
Walf

6

Якщо ви уважно прочитали чоловічу сторінку витягнення (1), то можна побачити, що існує 4 способи викидання:

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

Коли ви викликаєте витяг на HDD / SCSI, він видає ioctl(fd, SG_IO, (void *)&io_hdr);команду (копіювати з eject.cджерел).

Це еквівалентно безпечному видаленню пристрою в MS Windows або MaxOSX.

Для деяких пристроїв це особливе значення. Наприклад Kindle 3 після вилучення диска команди переміщається в режимі зарядки і дозволяють переглядати на пристрої, в той час , перш ніж екран був заблокований.

Інша комунальна служба робить те саме, як ця

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

3

"Виймання" не має сенсу для обладнання без лотка або іншого механізму завантаження (я припускаю, що він працює і зі стрічковими накопичувачами).

Однак тестування на зовнішній флеш-накопичувачі говорить про те, що ejectпрацює так само, як umountі побічний ефект - зникнення вузлів пристрою, наприклад

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

Зауважте, що /dev/sdc1зник.


1
Ніколи не пробував з стрічками ( mt rewofflбільш зручно , тому що він також перемотує), але це робить роботу з моторизованими гнучких дисків , як ті , що на старих комп'ютерах Mac і Sun робочих станцій.
Олексій

@Alexios цікаво.
Ренан

3

У командному рядку osx слід використовувати diskutil, де LABEL є міткою вашого USB-накопичувача.

diskutil eject /Volumes/<LABEL>

2

udisks --detach /dev/sdXде (X) - остання літера вашого пристрою usb. Він добре працює в будь-якій системі Linux.


Ваша відповідь гаразд, хоча, можливо, вона трохи коротка. Я б запропонував детальніше
розібратися

0

Гаразд, я спробую пояснити це краще:

Команда udisks повністю видаляє та вимикає будь-який usb-пристрій, встановлений чи приєднаний до системи unmount, просто відключіть розділ, тобто: dev / sdb1 або все, але usb все ще присутній у системі.

Так що це не одне і те ж відключення, викидання та від'єднання

udisks = живлення від usb

umount = просто відключіть розділ не весь маятник

eject = та сама або дуже близька до команди umount

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.