ฉันจะตรวจสอบผ่านคำสั่งเชลล์ได้อย่างไรถ้ามีการเชื่อมต่อดิสก์ภายนอกที่เฉพาะเจาะจง (ตามป้ายกำกับหรือรหัสอุปกรณ์)
ฉันจะตรวจสอบผ่านคำสั่งเชลล์ได้อย่างไรถ้ามีการเชื่อมต่อดิสก์ภายนอกที่เฉพาะเจาะจง (ตามป้ายกำกับหรือรหัสอุปกรณ์)
คำตอบ:
ในการทดสอบว่ามีการเชื่อมต่ออุปกรณ์เฉพาะคุณสามารถใช้grep
กับ-q
ตัวเลือกในการค้นหาผลลัพธ์ของlsusb
หรือlsblk
เช่น
uuid=f9035fce-b3a1-4aee-80ef-44e432b78fdb
lsblk -f | grep -wq $uuid && echo yes || echo no
devicename="some Inc. Keyboard"
lsusb | grep -q "$devicename" && echo yes || echo no
หรือด้วยif
:
uuid=f9035fce-b3a1-4aee-80ef-44e432b78fdb
if lsblk -f | grep -wq $uuid; then
echo yes
else
echo no
fi
สามารถใช้ทั้งสองอย่างไม่ว่าจะติดตั้งอุปกรณ์หรือไม่
/dev/disk/
มีไดเรกทอรีดังต่อไปนี้ซึ่งมีลิงค์สัญลักษณ์ไปยังอุปกรณ์จริง ลิงก์นี้สร้างและลบแบบไดนามิกโดยudev
ดังนั้นลิงก์เหล่านี้จึงเป็นข้อมูลล่าสุดเสมอ:
ดังนั้นการตรวจสอบการมีอยู่ของ symlink จะใช้ทรัพยากรน้อยลง
นี่คือตัวอย่างการทดสอบการมีดิสก์โดยใช้หมายเลขซีเรียล:
test -e /dev/disk/by-id/wwn-0x5002538d408be9e0 && echo yes || echo no
ในสคริปต์สำรองของฉันฉันไม่ได้ตรวจสอบสถานะของดิสก์ฉันจะตรวจสอบผลลัพธ์ของmount
คำสั่งดังนี้:
mount -o noatime $DESTINATION_PARTITION $DESTINATION_DIR || exit 1
lsusb
สำหรับรายการอุปกรณ์ USB ที่เชื่อมต่อหากดิสก์ภายนอกของคุณเชื่อมต่อผ่านอินเตอร์เฟส USB
lsblk -f
เพื่อแสดงรายการอุปกรณ์บล็อก UUID และจุดเมานท์เนื่องจากดิสก์ภายนอกของคุณเป็นอุปกรณ์บล็อก
-f
แสดงรายการจุดยึด? เอาท์พุทเริ่มต้นแสดงพวกเขาต่อไป
findfs
ทำเพื่อสิ่งนี้ คุณสามารถค้นหาโดย:
ป้ายกำกับ FS
findfs LABEL="Ubuntu" &>/dev/null
FS uuid
findfs UUID="f9035fce-b3a1-4aee-80ef-44e432b78fdb" &>/dev/null
ป้ายกำกับ GPT
findfs PARTLABEL="EFI system partition" &>/dev/null
findfs PARTUUID="85e66d2f-3709-4060-938e-ffe836433cc9" &>/dev/null
การค้นหาจะคำนึงถึงขนาดตัวพิมพ์ หากพาร์ติชั่นหลายพาร์ติชั่นตรงกันพาร์ติชั่นสุดท้ายจะแสดงขึ้นมา
lsblk -f | grep f9035fce-b3a1-4aee-80ef-44e432b78fdb | grep / -q && echo yes || echo no
-