ฉันรู้ว่าeject
สามารถใช้คำสั่งเพื่อเปิดส่วนประกอบฮาร์ดแวร์เกือบทุกตัวที่แนบมา แต่สามารถใช้เพื่อนำไดรฟ์ USB ออกได้หรือไม่
เป็นไปได้ที่จะนำไดรฟ์ USB และ HDD ภายนอกออกด้วยeject
คำสั่งหรือไม่
ฉันรู้ว่าeject
สามารถใช้คำสั่งเพื่อเปิดส่วนประกอบฮาร์ดแวร์เกือบทุกตัวที่แนบมา แต่สามารถใช้เพื่อนำไดรฟ์ USB ออกได้หรือไม่
เป็นไปได้ที่จะนำไดรฟ์ USB และ HDD ภายนอกออกด้วยeject
คำสั่งหรือไม่
คำตอบ:
ไม่พวกเขาไม่จำเป็นต้องเป็น; eject
ใช้สำหรับเปิดไดรฟ์ออปติคัลซึ่งไม่สามารถดึงสื่อได้โดยตรง
การถอนติดตั้งนั้นเพียงพอสำหรับ USB / eSATA / etc อุปกรณ์เก็บข้อมูล
sync
จะดึงมันออกมา
eject
นั้นไดรเวอร์อุปกรณ์ USB พื้นฐานอาจยังคง (ลอง) เขียนหลังจากumount
ได้กลับมา สามารถมองเห็นได้อย่างชัดเจนหากไดรฟ์มี LED แสดงสถานะ การบีบแท่ง USB ให้ถูกต้องหลังจากที่umount
ยกเลิกไปแล้วนั้นคือ RECIPE FOR DISASTER
ใช่. ตัวอย่างเช่น:
sudo eject /dev/sda
คำตอบอื่น ๆ ที่นี่ซึ่งระบุว่าคุณต้องใช้ฮาร์ดแวร์ดีดออกที่ไม่ถูกต้อง
การเลิกเมาท์ไม่ใช่สิ่งเดียวกับการดีดออก
sudo
เพื่อให้คำสั่งนี้เสร็จสิ้น (สิ่งที่ต้องทำก็คือถอนการติดตั้งไดรฟ์ออกก่อนที่จะบอกว่าไม่สามารถเปิดไฟล์ได้) นอกเหนือจากนั้นคำตอบที่เป็นประโยชน์
eject
จะทำงานได้ แต่จะไม่ "เสร็จงาน" ที่เกี่ยวกับไดรฟ์USB ที่หมุนได้
วิธีที่ดีที่สุดที่จะถอดภายนอก USB ไดรฟ์ฮาร์ดดิสก์หลังจาก unmounting ที่เหมาะสมคือ:
udisks --detach /dev/sdb
ซึ่งมักทำให้ไดรฟ์หมุนลงอย่างนุ่มนวล
แม่นยำการใช้งานปัจจุบัน :
กระบวนการนี้อยู่ใกล้กับขั้นตอนด้วยตนเองที่เป็นข้อเสนอแนะที่นี่ คำตอบแรกคือใน askubuntu
แก้ไข: นอกจากนี้ตามที่g.rocketชี้ให้เห็นคำสั่งนี้อาจเทียบเท่า:
udisksctl power-off -b /dev/sdb
udisksctl
ซึ่งไม่มี--detach
otion พร้อมใช้งาน จะทำอย่างไรในกรณีนี้? ขอขอบคุณ.
udisks
คุณติดตั้ง
udisks
อย่างไร มันไม่ได้อยู่ในระบบของฉัน ฉันพบแพ็คเกจudisks2
แต่ไม่ได้ให้ บริการudisks
หรือไม่udisks2
พร้อมใช้งาน
udisksctl power-off -b /dev/sdwhatever
ดูเหมือนจะทำสิ่งเดียวกัน
ขั้นตอนแบบแมนนวลสำหรับการ unmounting ดิสก์ / dev / sdb (ต้องใช้ sudo):
echo 'offline' > /sys/block/sdb/device/state
echo '1' > /sys/block/sdb/device/delete
นี่จะเป็นการปิดอุปกรณ์และถอดออกจากระบบอย่างสมบูรณ์ มันจะไม่ถูกตรวจจับอีกครั้งจนกว่าจะถูกตัดการเชื่อมต่อและแนบใหม่
hdparm -Y
ยังมีประโยชน์สำหรับไดรฟ์ SATA / IDE
หากคุณอ่าน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
"การดีดออก" นั้นไม่มีความหมายสำหรับฮาร์ดแวร์หากไม่มีถาดหรือกลไกการโหลดอื่น ๆ (ฉันถือว่ามันทำงานได้กับเทปไดรฟ์ด้วย)
อย่างไรก็ตามการทดสอบกับแฟลชไดรฟ์ USB ภายนอกบอกว่าใช้eject
งานได้ดีเช่นumount
- โดยมีผลข้างเคียงของการทำให้โหนดอุปกรณ์หายไปเช่น
% ls /dev/sdc*
/dev/sdc /dev/sdc1
% sudo eject /dev/sdc
% ls /dev/sdc*
/dev/sdc
โปรดทราบว่า/dev/sdc1
ได้หายไป
mt rewoffl
สะดวกกว่าเพราะมันจะย้อนกลับ) แต่มันจะทำงานกับไดรฟ์ฟลอปปี้แบบเครื่องยนต์เช่นเดียวกับที่พบในเวิร์กสเตชัน Mac และ Sun รุ่นเก่า
ในบรรทัดคำสั่ง osx คุณควรใช้diskutilโดยที่LABELเป็นฉลากของไดรฟ์ usb ของคุณ
diskutil eject /Volumes/<LABEL>
udisks --detach /dev/sdX
โดยที่ (X) เป็นตัวอักษรตัวสุดท้ายของอุปกรณ์ usb ของคุณ มันทำงานได้ดีบนระบบ linux ใด ๆ
ตกลงฉันจะพยายามอธิบายสิ่งนี้ให้ดีขึ้น:
คำสั่ง udisks จะทำการถอดและปิดอุปกรณ์ usb ใด ๆ ที่ติดตั้งหรือติดอยู่ในระบบคำสั่ง unmount เพียงแค่ถอนการติดตั้งพาร์ติชั่นเช่น: dev / sdb1 หรืออะไรก็ตาม แต่ usb ยังคงอยู่ในระบบ
ดังนั้นจึงไม่เหมือนกัน unmount eject และ detach
udisks = ปิดไฟ usb
umount = เพียงแค่ถอนการติดตั้งพาร์ติชั่นไม่ใช่ทั้งเพนไดรฟ์
eject = คำสั่ง umount เดียวกันหรือใกล้เคียงกันมาก
eject /dev/sdX
คือsg_start -s /dev/sdX
(จากsg3_utils
แพ็คเกจ) ทั้งสองใช้คำสั่ง SCSI เพื่อส่งไปยังอุปกรณ์