Score:2

การเมานต์ไดร์ฟและ Udev - Udev ไม่เมาต์ไดร์ฟ แต่รันส่วนอื่นๆ ของสคริปต์

ธง za

ฉันต้องการ 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

William Satterthwaite avatar
za flag
ฉันพบวิธีแก้ปัญหาโดยที่ฉันมี 2 สคริปต์ สคริปต์แรกเริ่มสคริปต์ที่สองโดยใช้ 'nohup' จากนั้นออก ทำให้ Ubuntu สามารถติดตั้งไดรฟ์ได้ ครั้งที่สองรอ 10 วินาทีเพื่อให้มีเวลาสำหรับการเมานต์จากนั้นเรียกใช้ Unison ฉันไม่พบว่างานนี้น่าพอใจมาก
William Satterthwaite avatar
za flag
ฉันแสดงความคิดเห็นเร็ว ๆ นี้เล็กน้อยโดยไม่ต้องทดสอบอย่างสมบูรณ์ ... มันใช้งานไม่ได้ แต่การกำหนดเวลาสคริปต์ที่สองทำได้ เช่น. `ตอนนี้ + 1 นาที -f sync2.sh`
user.dz avatar
ng flag
ใช่ การตั้งเวลา (ดึง) เป็นวิธีหนึ่งที่จะไป
Score:1
ธง ng

AFAIK สคริปต์ udev ทั้งหมดที่มีการเมานต์ FS มีอายุไม่กี่ปีที่ผ่านมา ฉันเชื่อว่ามันมีการเปลี่ยนแปลงในช่วงเวลา ระบบ โผล่ออกมา

นี่คือบันทึกอ้างอิงจาก udev_237 - ผู้ชาย อูเดฟ (อูบุนตู_18.04)

วิ่ง{ประเภท}

    âï¸

    โปรดทราบว่าการเรียกใช้โปรแกรมที่เข้าถึงเครือข่ายหรือ ไม่อนุญาตให้เมานต์/ยกเลิกการเมานท์ระบบไฟล์ภายในกฎ udev เนื่องจาก Sandbox เริ่มต้นที่บังคับใช้ systemd-udevd.service.

ดีกว่าที่จะใช้โซลูชันที่ใช้ libs เช่น udev, udisks, ... หรือสคริปต์ภายนอกที่คอยเฝ้าดูอุปกรณ์นั้น

BTW, 100- ยังเร็วเกินไปสำหรับแอปพลิเคชันอื่น (ไฟล์กฎ udev ได้รับการประมวลผลตามลำดับคำศัพท์) ควรเปลี่ยนเป็นตัวเลขสูง 2 หลัก หากคุณต้องการใช้ครั้งสุดท้าย 99-

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา