Điểm:2

Gắn ổ đĩa và Udev - Udev không gắn ổ đĩa nhưng thực thi các khía cạnh khác của tập lệnh

lá cờ za

Tôi muốn cắm nóng một ổ cứng ngoài, để nó gắn kết và tự động chạy Unison File Syncizer.

Tôi đã thực hiện một quy tắc udev gọi là /etc/udev/rules.d/100-sync.rules

ACTION=="add", SUBSYSTEMS=="usb", ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="wxyz", ATTRS{idProduct}=="wxyz", RUN+="/home/ william/sync.sh"

Nó kích hoạt kịch bản này:

#!/bin/bash
mkdir/phương tiện/william/Sao lưu
gắn kết -U <my_drives_uuid> /media/william/Backup
su william -c 'thông báo-gửi "Unison" "Bắt đầu đồng bộ hóa"'
su william -c 'unison Desktop_Ext_local_connection.prf -silent > /home/william/unison_errors.log'
su william -c 'thông báo-gửi "Unison" "Đồng bộ hóa xong"'
số lượng / phương tiện/william/Sao lưu
rmdir /media/william/Sao lưu

Chạy tập lệnh từ trình bao gốc hoạt động như mong đợi, tuy nhiên khi nó được kích hoạt bởi udev, ổ đĩa không được gắn kết. (Tôi vẫn nhận được thông báo hệ thống và tạo/hủy thư mục)

Dựa trên cái này, tôi nghĩ nó không hoạt động vì udev sử dụng một không gian tên khác. Tôi đã thử tạo một tệp /etc/systemd/system/systemd-udevd.service với nội dung

[Dịch vụ]
MountFlags=shared *(và cách khác là PrivateMounts=no)*

Tuy nhiên, điều này không thay đổi hành vi - nó vẫn không gắn kết. (vâng, tôi đã khởi động lại daemon)

Làm cách nào tôi có thể lấy ổ đĩa để gắn kết bằng udev?

Sau khi tập lệnh của tôi hoàn thành, Ubuntu sẽ tự động gắn ổ đĩa. Có công việc nào cho phép Ubuntu gắn ổ đĩa trước khi udev chạy tập lệnh của tôi không?

Tôi không thể thấy bất kỳ quy tắc udev nào mà Ubuntu sử dụng để gắn ổ đĩa, nội dung của /etc/udev/rules.d chỉ là

100-sync.rules 70-snap.snapd.rules 70-snap.snap-store.rules

Vậy làm cách nào để Ubuntu gắn ổ đĩa sau khi tập lệnh của tôi hoàn thành và làm cách nào tôi có thể thay đổi thứ tự để chúng được gắn trước?

Tôi đang sử dụng Ubuntu 20.04.3 LTS, sự cố tương tự xảy ra trên máy tính xách tay của tôi chạy 21.04

William Satterthwaite avatar
lá cờ za
Tôi đã tìm thấy một công việc xung quanh nơi tôi có 2 kịch bản. Tập lệnh đầu tiên bắt đầu tập lệnh thứ hai bằng cách sử dụng `nohup` rồi thoát, cho phép Ubuntu gắn ổ đĩa. Cái thứ hai đợi 10 giây để có thời gian gắn kết sau đó chạy Unison. Tôi không thấy công việc này rất thỏa mãn.
William Satterthwaite avatar
lá cờ za
Tôi đã nhận xét hơi sớm mà không kiểm tra đầy đủ... Nó không hoạt động, nhưng việc lên lịch cho tập lệnh thứ hai thì có. ví dụ. `hiện tại + 1 phút -f sync2.sh`
user.dz avatar
lá cờ ng
Vâng, Lên lịch (kéo) là một cách để thực hiện.
Điểm:1
lá cờ ng

AFAIK, tất cả các tập lệnh udev bao gồm cài đặt FS đều đã cũ cách đây vài năm. Tôi tin rằng nó đã được thay đổi khoảng thời gian hệ thống nổi lên.

Đây là một lưu ý tham khảo từ udev_237 - người đàn ông udev (Ubuntu_18.04)

CHẠY{loại}

    âï¸

    Lưu ý rằng các chương trình đang chạy truy cập mạng hoặc mount/unmount hệ thống tập tin không được phép bên trong quy tắc udev, do hộp cát mặc định được thi hành trên systemd-udevd.service.

Tốt hơn nên sử dụng các giải pháp sử dụng lib như udev, udisks, ... Hoặc một tập lệnh bên ngoài tiếp tục theo dõi thiết bị đó.

Nhân tiện, 100- là quá sớm ngay cả đối với các ứng dụng khác (các tệp quy tắc udev được xử lý theo thứ tự từ vựng), nên thay đổi nó thành một số có 2 chữ số cao. Nếu bạn muốn sử dụng lần cuối 99-

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.