ฉันต้องการ hot plug ฮาร์ดไดรฟ์ภายนอก ติดตั้งและเรียกใช้ Unison File Synchronizer โดยอัตโนมัติ
ฉันได้สร้างกฎ udev ที่เรียกว่า /etc/udev/rules.d/100-sync.rules
ACTION=="add", SUBSYSTEMS=="usb", ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="wxyz", ATTRS{idProduct}=="wxyz", RUN+="/home/ วิลเลียม/sync.sh"
มันทริกเกอร์สคริปต์นี้:
#!/bin/bash
mkdir /media/william/สำรองข้อมูล
เมานต์ -U <my_drives_uuid> /media/william/Backup
su william -c 'แจ้ง-ส่ง "พร้อมเพรียงกัน" "กำลังเริ่มซิงค์"'
su william -c 'พร้อมเพรียง Desktop_Ext_local_connection.prf -silent > /home/william/unison_errors.log'
su william -c 'แจ้ง-ส่ง "พร้อมเพรียงกัน" "เสร็จสิ้นการซิงค์"'
umount /media/william/สำรองข้อมูล
rmdir /media/william/สำรองข้อมูล
การรันสคริปต์จากรูทเชลล์ทำงานตามที่คาดไว้ แต่เมื่อเรียกใช้โดย udev ไดรฟ์จะไม่ต่อเชื่อม (ฉันยังคงได้รับการแจ้งเตือนจากระบบและการสร้าง/ทำลายไดเร็กทอรี)
ขึ้นอยู่กับ นี้ฉันคิดว่ามันใช้งานไม่ได้เพราะ udev ใช้เนมสเปซอื่น ฉันได้ลองสร้างไฟล์ /etc/systemd/system/systemd-udevd.service
ด้วยเนื้อหา
[บริการ]
MountFlags=shared *(และอีกทางหนึ่ง PrivateMounts=no)*
อย่างไรก็ตามสิ่งนี้ไม่ได้เปลี่ยนลักษณะการทำงาน - มันยังคงไม่เมานต์ (ใช่ ฉันรีสตาร์ทภูต)
ฉันจะติดตั้งไดรฟ์โดยใช้ udev ได้อย่างไร
หลังจากสคริปต์ของฉันเสร็จสิ้น Ubuntu จะเมานต์ไดรฟ์โดยอัตโนมัติ มีวิธีแก้ไขที่ช่วยให้ Ubuntu ติดตั้งไดรฟ์ก่อนที่ udev จะรันสคริปต์ของฉันหรือไม่
ฉันไม่เห็นกฎ udev ที่ Ubuntu ใช้เพื่อเมานต์ไดรฟ์ เนื้อหาของ /etc/udev/rules.d
เป็นเพียง
100-sync.rules 70-snap.snapd.rules 70-snap.snap-store.rules
Ubuntu ติดตั้งไดรฟ์อย่างไรหลังจากสคริปต์ของฉันเสร็จสิ้น และฉันจะเปลี่ยนลำดับเพื่อให้ติดตั้งก่อนได้อย่างไร
ฉันใช้ Ubuntu 20.04.3 LTS ปัญหาเดียวกันนี้เกิดขึ้นกับแล็ปท็อปของฉันที่ใช้ 21.04