Đẩy ổ đĩa USB / lệnh đẩy


55

Tôi biết rằng ejectlệnh có thể được sử dụng để đẩy hầu hết mọi thành phần phần cứng được đính kèm, nhưng nó có thể được sử dụng để đẩy các ổ USB không?

Có thể lấy ổ USB và ổ cứng gắn ngoài bằng ejectlệnh không?


3
Liên quan: ngược lại eject /dev/sdXsg_start -s /dev/sdX(từ sg3_utilsgói), cả hai đều sử dụng các lệnh SCSI để gửi đến thiết bị.
Yeti

Câu trả lời:


15

Không. Họ cũng không cần phải như vậy; ejectđược sử dụng để mở các ổ đĩa quang, trong đó người ta không thể lấy phương tiện truyền thông trực tiếp từ đó.

Ngắt kết nối là đủ cho USB / eSATA / vv. thiêt bị lưu trư.


Hmm, tôi thấy đẩy hdd như trong / dev / sda ở đâu đó. Tôi đoán các tài liệu tham khảo đã sai sau đó.
Joe Barr

Bạn có thể làm điều đó, nhưng nó thường không làm được gì nhiều nếu có bất cứ điều gì.
Ignacio Vazquez-Abrams

1
Điều này giả định rằng thiết bị được gắn ở vị trí đầu tiên và mang theo một giả định lớn khác (nó có một hệ thống tệp mà bạn có thể đọc, cho một). Hãy tưởng tượng rằng bạn đang xóa một loạt các ổ đĩa ngoài - chúng có thể không bao giờ được gắn kết. đẩy ra là điều đúng để sử dụng.
James Moore

1
Nếu tôi không chắc chắn, synctrước khi tôi rút nó ra
EkriirkE

CẢNH BÁO lớn, mập: Điều này KHÔNG hoàn toàn đúng. Nếu bạn không ejectcài đặt Trình điều khiển thiết bị USB thì vẫn có thể (cố gắng) viết SAU umountđã trở lại. Điều này có thể được nhìn thấy rõ nếu ổ đĩa có đèn LED trạng thái. Yanking thanh USB ngay sau khi umountchấm dứt là RECIPE FOR DISASTER.
ZioByte

77

Đúng. Ví dụ:

sudo eject /dev/sda

Các câu trả lời khác ở đây chỉ ra rằng bạn yêu cầu phần cứng tống máu cơ học là không chính xác.

Unmounting không giống như đẩy ra.

  1. Nếu bạn ngắt kết nối âm lượng, bạn có thể lắp lại ngay lập tức, vì thiết bị bên dưới vẫn khả dụng. Trong một số tình huống, điều này có thể gây ra rủi ro bảo mật. Bằng cách đẩy thiết bị ra, chỉ có thiết lập lại hệ thống con USB (ví dụ: khởi động lại) sẽ tải lại thiết bị.
  2. Bằng cách đẩy thiết bị ra, bạn vô hiệu hóa mọi quyền truy cập vào thiết bị một cách hiệu quả. Chỉ thiết lập lại hệ thống con USB (ví dụ: khởi động lại) sẽ tải lại thiết bị. Nếu không, bạn phải ngắt kết nối thiết bị USB về mặt vật lý và kết nối lại để truy cập lại thiết bị.
  3. Trước khi đẩy ra, lệnh này sẽ ngắt kết nối tất cả các âm lượng trên thiết bị được gắn.
  4. Nếu các ổ đĩa đang được sử dụng, lệnh này sẽ thất bại như với unmount, ngoại trừ một số ổ đĩa có thể không được đếm và một số ổ đĩa có thể vẫn được gắn kết.

1
Tôi cũng đã phải sử dụng sudođể hoàn thành lệnh này (tất cả những gì cần làm là ngắt kết nối ổ đĩa trước khi nói rằng nó không thể mở tệp). Ngoài ra, câu trả lời hữu ích.
GDP2

Câu trả lời đánh giá thấp trong chủ đề này. Chỉ cần nhìn vào một ổ đĩa được gắn FAT32, và chú ý cách ngắt kết nối và đẩy ra có một thế giới khác biệt chỉ trong trình thám hiểm tệp (ví dụ: nautilus). Một clip Sansa đơn giản cũng sẽ giúp chứng minh điều này.
Đám mây

Thiết bị vẫn có mặt khi thực hiện lsusb. Vì vậy, bạn không phải thiết lập lại toàn bộ Hệ thống con USB. Chỉ cần thiết bị là đủ. Bạn có thể sử dụng usbreset để thực hiện điều này github.com/jkulesza/usbreset github.com/CWempe/usbreset Các tệp usbreset.c giống hệt nhau trong cả hai dự án,
Hannes

Làm thế nào để tôi biết rằng "sda" là đúng? Tôi có thể ánh xạ sda, sdb, vv sang tên thiết bị thật không?
Jürgen K.

38

ejectsẽ hoạt động, nhưng sẽ không thực sự "hoàn thành công việc" liên quan đến ổ đĩa xoay USB.

Cách tốt nhất để rút ổ cứng gắn ngoài USB, sau khi ngắt kết nối đúng cách là:

udisks --detach /dev/sdb

Điều này thường làm cho ổ đĩa quay xuống duyên dáng.

Chính xác, việc thực hiện hiện tại :

  • gửi lệnh bộ đệm đồng bộ SCSI,
  • gửi lệnh dừng SCSI,
  • hủy kết nối trình điều khiển kernel lưu trữ usb,
  • treo thiết bị USB (nguồn),
  • logic vô hiệu hóa / loại bỏ nó khỏi cổng USB của nó.

Quá trình này gần với thủ tục thủ công được đề xuất ở đây . Câu trả lời ban đầu là trên Askubfox .

EDIT: Ngoài ra, như g.rocket chỉ ra, lệnh này có thể tương đương:

udisksctl power-off -b /dev/sdb

Trên ubfox của tôi udisksctlkhông có --detachsẵn otion. Phải làm gì trong trường hợp này? cảm ơn bạn.
Wakan Tanka

@WakanTanka bạn cài đặt udisks.
Totor

Làm thế nào tôi có thể cài đặt udisks? Nó không có trên hệ thống của tôi. Tôi tìm thấy gói udisks2, nhưng nó không làm udiskshoặc udisks2 có sẵn.
Martin Thoma

5
@WakanTanka udisksctl power-off -b /dev/sdwhateverdường như làm điều tương tự.
g.rocket

@ g.rocket trả lời cập nhật tương ứng. Cảm ơn bạn.
Totor

8

Các bước thủ công để ngắt kết nối đĩa / dev / sdb (Yêu cầu sudo):

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

Điều này sẽ tắt hoàn toàn thiết bị và tách thiết bị ra khỏi hệ thống. Nó sẽ không được phát hiện lại cho đến khi nó bị ngắt kết nối và gắn lại.


2
FWIW đây là điều duy nhất phù hợp với tôi trong Xen dom0 với giá đỡ USB bên ngoài - các lệnh đẩy và udisks đã báo lỗi.
GS - Xin lỗi Monica

1
Tôi đang tìm kiếm cái này, tôi đang ở chế độ khẩn cấp và tôi không có quyền truy cập vào bất kỳ chức năng nào khác. Cảm ơn!
Nassiel

hdparm -Ycũng thuận tiện cho các ổ đĩa SATA / IDE.
Sai

6

Nếu bạn đọc kỹ trang đẩy (1), bạn có thể thấy rằng có 4 phương pháp đẩy:

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

Khi bạn gọi đẩy ra trên HDD / SCSI, nó sẽ phát ioctl(fd, SG_IO, (void *)&io_hdr);lệnh (sao chép từ eject.ccác nguồn).

Điều này tương đương với việc bạn gỡ bỏ thiết bị một cách an toàn trong MS Windows hoặc MaxOSX.

Đối với một số thiết bị, điều này có ý nghĩa đặc biệt. Ví dụ, Kindle 3 sau khi lệnh đẩy đã được chuyển sang chế độ sạc và cho phép duyệt trên thiết bị, trong khi trước khi màn hình bị khóa.

Một tiện ích khác làm điều tương tự, như thế này

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

3

"Đẩy ra" không có ý nghĩa gì đối với phần cứng mà không có khay hoặc cơ chế tải khác (tôi giả sử nó cũng hoạt động với các ổ băng từ).

Tuy nhiên, thử nghiệm với ổ flash USB bên ngoài cho biết ejecthoạt động giống như umount- với tác dụng phụ là làm cho các nút thiết bị biến mất, ví dụ:

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

Lưu ý rằng /dev/sdc1đã biến mất.


1
Chưa bao giờ thử nó với băng ( mt rewoffllà thuận tiện hơn vì nó cũng tua lại), nhưng nó không làm việc với ổ đĩa mềm cơ giới như những người được tìm thấy trên máy trạm Mac và Sun cũ.
Alexios

@Alexios thú vị.
Renan

3

Trong dòng lệnh osx, bạn nên sử dụng Diskutil trong đó LABEL là nhãn của ổ đĩa USB của bạn.

diskutil eject /Volumes/<LABEL>

2

udisks --detach /dev/sdXtrong đó (X) là chữ cái cuối cùng của thiết bị usb của bạn. Nó hoạt động tốt trên bất kỳ hệ thống linux.


Câu trả lời của bạn là ổn, mặc dù có thể nó hơi ngắn. Tôi sẽ đề nghị giải thích thêm: lệnh này làm gì, như thế nào, tại sao đây là những gì bạn đề xuất, v.v.
user259412

0

OK tôi sẽ cố gắng giải thích điều này tốt hơn:

Lệnh udisks loại bỏ hoàn toàn và tắt nguồn bất kỳ thiết bị usb nào được gắn hoặc gắn trong lệnh ngắt kết nối hệ thống chỉ cần ngắt kết nối phân vùng, ví dụ: dev / sdb1 hoặc bất cứ điều gì nhưng usb vẫn có trong hệ thống.

Vì vậy, không phải là unmount, đẩy và tách ra

udisks = tắt nguồn usb

umount = chỉ ngắt kết nối phân vùng không phải toàn bộ ổ đĩa

đẩy ra = cùng hoặc rất gần với lệnh umount

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.