นำไดรฟ์ USB ออก / ออกคำสั่ง


55

ฉันรู้ว่าejectสามารถใช้คำสั่งเพื่อเปิดส่วนประกอบฮาร์ดแวร์เกือบทุกตัวที่แนบมา แต่สามารถใช้เพื่อนำไดรฟ์ USB ออกได้หรือไม่

เป็นไปได้ที่จะนำไดรฟ์ USB และ HDD ภายนอกออกด้วยejectคำสั่งหรือไม่


3
ที่เกี่ยวข้อง: ตรงกันข้ามeject /dev/sdXคือsg_start -s /dev/sdX(จากsg3_utilsแพ็คเกจ) ทั้งสองใช้คำสั่ง SCSI เพื่อส่งไปยังอุปกรณ์
Yeti

คำตอบ:


15

ไม่พวกเขาไม่จำเป็นต้องเป็น; ejectใช้สำหรับเปิดไดรฟ์ออปติคัลซึ่งไม่สามารถดึงสื่อได้โดยตรง

การถอนติดตั้งนั้นเพียงพอสำหรับ USB / eSATA / etc อุปกรณ์เก็บข้อมูล


อืมฉันเห็นดีด hdd เหมือนใน / dev / sda ที่ไหนสักแห่ง ฉันเดาว่าการอ้างอิงนั้นผิด
Joe Barr

คุณสามารถทำได้ แต่โดยปกติจะไม่ทำอะไรมากเลย
Ignacio Vazquez-Abrams

1
สิ่งนี้จะถือว่าอุปกรณ์ถูกติดตั้งในครั้งแรกและมีการดำเนินการตามสมมติฐานขนาดใหญ่อีกชุดหนึ่ง (มีระบบไฟล์ที่คุณสามารถอ่านได้หนึ่งอัน) ลองนึกภาพว่าคุณกำลังลบไดรฟ์ภายนอกจำนวนมาก - พวกเขาอาจไม่ได้ติดตั้งเลย การนำออกเป็นสิ่งที่ถูกต้องที่จะใช้
James Moore

1
ถ้าฉันไม่แน่ใจฉันก็syncจะดึงมันออกมา
EkriirkE

ใหญ่ไขมันคำเตือน: นี่ไม่เป็นความจริงอย่างสมบูรณ์ หากคุณไม่ทำเช่นejectนั้นไดรเวอร์อุปกรณ์ USB พื้นฐานอาจยังคง (ลอง) เขียนหลังจากumountได้กลับมา สามารถมองเห็นได้อย่างชัดเจนหากไดรฟ์มี LED แสดงสถานะ การบีบแท่ง USB ให้ถูกต้องหลังจากที่umountยกเลิกไปแล้วนั้นคือ RECIPE FOR DISASTER
ZioByte

77

ใช่. ตัวอย่างเช่น:

sudo eject /dev/sda

คำตอบอื่น ๆ ที่นี่ซึ่งระบุว่าคุณต้องใช้ฮาร์ดแวร์ดีดออกที่ไม่ถูกต้อง

การเลิกเมาท์ไม่ใช่สิ่งเดียวกับการดีดออก

  1. หากคุณยกเลิกการต่อเชื่อมวอลุ่มคุณสามารถเมานกลับได้ทันทีเนื่องจากอุปกรณ์ที่รองรับยังคงมีอยู่ ในบางสถานการณ์สิ่งนี้อาจมีความเสี่ยงด้านความปลอดภัย โดยการดีดอุปกรณ์เพียงรีเซ็ตระบบย่อย USB (เช่นรีบูต) เท่านั้นที่จะรีโหลดอุปกรณ์
  2. โดยการนำอุปกรณ์ออกคุณจะปิดการใช้งานการเข้าถึงอุปกรณ์เพิ่มเติมได้อย่างมีประสิทธิภาพ การรีเซ็ตระบบย่อย USB เท่านั้น (เช่นการรีบูต) จะทำการรีโหลดอุปกรณ์ มิฉะนั้นคุณจะต้องตัดการเชื่อมต่ออุปกรณ์ USB และเชื่อมต่ออุปกรณ์นั้นอีกครั้งเพื่อให้สามารถเข้าถึงได้อีกครั้ง
  3. ก่อนที่จะดีดออกคำสั่งนี้จะยกเลิกการต่อเชื่อมวอลุ่มทั้งหมดบนอุปกรณ์ที่ติดตั้ง
  4. หากวอลุ่มถูกใช้งานคำสั่งนี้จะล้มเหลวเช่นเดียวกับ unmount ยกเว้นว่าบางวอลุ่มอาจถูก unmount และบางวอลุ่มอาจยังคงเมาต์อยู่

1
ฉันยังต้องใช้sudoเพื่อให้คำสั่งนี้เสร็จสิ้น (สิ่งที่ต้องทำก็คือถอนการติดตั้งไดรฟ์ออกก่อนที่จะบอกว่าไม่สามารถเปิดไฟล์ได้) นอกเหนือจากนั้นคำตอบที่เป็นประโยชน์
GDP2

คำตอบที่ไม่ได้รับการชื่นชมในหัวข้อนี้ เพียงดูที่ thumb drive ที่ติดตั้ง FAT32 และสังเกตว่าการ unmounting และ ejecting นั้นมีโลกที่แตกต่างเพียงแค่ใน file explorer (เช่น: nautilus) เพียงอย่างเดียว คลิป Sansa ง่าย ๆ ก็ช่วยสาธิตเรื่องนี้เช่นกัน
Cloud

อุปกรณ์ยังคงอยู่เมื่อเรียกใช้ lsusb ดังนั้นคุณไม่จำเป็นต้องรีเซ็ตระบบย่อย USB ทั้งหมด เพียงแค่อุปกรณ์ก็เพียงพอ คุณสามารถใช้ usbreset การทำเช่นนี้github.com/jkulesza/usbreset github.com/CWempe/usbresetไฟล์ usbreset.c เป็นเหมือนกันทั้งในโครงการ
ฮานเนส

38

ejectจะทำงานได้ แต่จะไม่ "เสร็จงาน" ที่เกี่ยวกับไดรฟ์USB ที่หมุนได้

วิธีที่ดีที่สุดที่จะถอดภายนอก USB ไดรฟ์ฮาร์ดดิสก์หลังจาก unmounting ที่เหมาะสมคือ:

udisks --detach /dev/sdb

ซึ่งมักทำให้ไดรฟ์หมุนลงอย่างนุ่มนวล

แม่นยำการใช้งานปัจจุบัน :

  • ส่งคำสั่ง SCSI sync-cache
  • ส่งคำสั่ง SCSI stop
  • ยกเลิกการผูกไดรเวอร์เคอร์เนลหน่วยเก็บข้อมูล USB
  • ระงับอุปกรณ์ USB (ไฟ)
  • ปิดการใช้งานทางตรรกะ / ลบออกจากพอร์ต USB ของมัน

กระบวนการนี้อยู่ใกล้กับขั้นตอนด้วยตนเองที่เป็นข้อเสนอแนะที่นี่ คำตอบแรกคือใน askubuntu

แก้ไข: นอกจากนี้ตามที่g.rocketชี้ให้เห็นคำสั่งนี้อาจเทียบเท่า:

udisksctl power-off -b /dev/sdb

บน Ubuntu ของฉัน onyl udisksctlซึ่งไม่มี--detachotion พร้อมใช้งาน จะทำอย่างไรในกรณีนี้? ขอขอบคุณ.
Wakan Tanka

@WakanTanka udisksคุณติดตั้ง
Totor

ฉันจะติดตั้งได้udisksอย่างไร มันไม่ได้อยู่ในระบบของฉัน ฉันพบแพ็คเกจudisks2แต่ไม่ได้ให้ บริการudisksหรือไม่udisks2พร้อมใช้งาน
Martin Thoma

5
@WakanTanka udisksctl power-off -b /dev/sdwhateverดูเหมือนจะทำสิ่งเดียวกัน
g.rocket

@ g.rocket คำตอบอัปเดตตามนั้น ขอขอบคุณ.
Totor

8

ขั้นตอนแบบแมนนวลสำหรับการ unmounting ดิสก์ / dev / sdb (ต้องใช้ sudo):

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

นี่จะเป็นการปิดอุปกรณ์และถอดออกจากระบบอย่างสมบูรณ์ มันจะไม่ถูกตรวจจับอีกครั้งจนกว่าจะถูกตัดการเชื่อมต่อและแนบใหม่


2
FWIW นี่เป็นสิ่งเดียวที่ใช้ได้กับฉันใน Xen dom0 พร้อมแท่นเสียบ USB ภายนอก - คำสั่ง eject และ udisks ทำให้เกิดข้อผิดพลาด
Ganesh Sittampalam

1
ฉันกำลังค้นหาสิ่งนี้ฉันอยู่ในโหมดฉุกเฉิน dracut และฉันไม่สามารถเข้าถึงฟังก์ชั่นอื่น ๆ ได้ ขอบคุณ!
Nassiel

hdparm -Yยังมีประโยชน์สำหรับไดรฟ์ SATA / IDE
วอลฟ

6

หากคุณอ่านeject (1) man page อย่างรอบคอบคุณจะเห็นว่ามีวิธีการนำออก 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.

เมื่อคุณเรียกใช้ejectบน HDD / SCSI จะเรียกใช้ioctl(fd, SG_IO, (void *)&io_hdr);คำสั่ง (คัดลอกจากeject.cแหล่งที่มา)

สิ่งนี้เทียบเท่ากับการลบอุปกรณ์ใน MS Windows หรือ MaxOSX อย่างปลอดภัย

สำหรับอุปกรณ์บางตัวนี้มีค่าเฉลี่ยพิเศษ ตัวอย่างเช่น Kindle 3 หลังจากคำสั่งejectถูกย้ายไปยังโหมดการชาร์จและอนุญาตให้เรียกดูบนอุปกรณ์ในขณะที่ก่อนหน้าจอถูกล็อค

สาธารณูปโภคอื่น ๆ ทำสิ่งเดียวกันเช่นนี้

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

3

"การดีดออก" นั้นไม่มีความหมายสำหรับฮาร์ดแวร์หากไม่มีถาดหรือกลไกการโหลดอื่น ๆ (ฉันถือว่ามันทำงานได้กับเทปไดรฟ์ด้วย)

อย่างไรก็ตามการทดสอบกับแฟลชไดรฟ์ USB ภายนอกบอกว่าใช้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

@Alexios ที่น่าสนใจ
Renan

3

ในบรรทัดคำสั่ง osx คุณควรใช้diskutilโดยที่LABELเป็นฉลากของไดรฟ์ usb ของคุณ

diskutil eject /Volumes/<LABEL>

2

udisks --detach /dev/sdXโดยที่ (X) เป็นตัวอักษรตัวสุดท้ายของอุปกรณ์ usb ของคุณ มันทำงานได้ดีบนระบบ linux ใด ๆ


คำตอบของคุณไม่เป็นไรถึงแม้ว่ามันอาจจะสั้นไปสักหน่อย ฉันขอแนะนำให้ทำอย่างละเอียดมากขึ้น: สิ่งที่คำสั่งนี้ทำอย่างไรทำไมสิ่งนี้คือสิ่งที่คุณแนะนำและอื่น ๆ
259412

0

ตกลงฉันจะพยายามอธิบายสิ่งนี้ให้ดีขึ้น:

คำสั่ง udisks จะทำการถอดและปิดอุปกรณ์ usb ใด ๆ ที่ติดตั้งหรือติดอยู่ในระบบคำสั่ง unmount เพียงแค่ถอนการติดตั้งพาร์ติชั่นเช่น: dev / sdb1 หรืออะไรก็ตาม แต่ usb ยังคงอยู่ในระบบ

ดังนั้นจึงไม่เหมือนกัน unmount eject และ detach

udisks = ปิดไฟ usb

umount = เพียงแค่ถอนการติดตั้งพาร์ติชั่นไม่ใช่ทั้งเพนไดรฟ์

eject = คำสั่ง umount เดียวกันหรือใกล้เคียงกันมาก

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.