Tôi muốn tự động để một số tệp tạo thành một thiết bị lưu trữ được sao chép khi chèn. Tôi đang tìm cách sử dụng một và cùng một phương thức trên cả hai hệ thống sử dụng systemd và system sử dụng init script (ví dụ: OpenRC trên Gentoo). Ngoài ra, tôi sẽ tìm cách không phá vỡ tính năng tự động.
Tôi tập hợp từ nhiều câu hỏi khác liên quan đến vấn đề này rằng điều này được thực hiện tốt nhất thông qua udev và nó gần như hoạt động, nếu không phải là udev posthook bein được thực thi nghiêm ngặt trước autoount (theo cách mà udev kiểm tra trạng thái thoát của bất kỳ tập lệnh nào nó được gọi và bất kỳ kịch bản nào mà script gọi, theo một số quy trình mà theo tôi trông giống như ma thuật):
Việc thực thi tập lệnh hoạt động, chỉ là tập tin không thể được sao chép, bởi vì (tôi tin) trình kích hoạt automount chờ tập lệnh sao chép hoàn thành trước:
chymera@quiethost ~/.repositorg/transfer $ cat /etc/udev/rules.d/95-local.rules
ACTION=="add", KERNEL=="sd?1", ENV{ID_FS_UUID}=="4C3D-8BCB", RUN+="/bin/su chymera -c /home/chymera/.repositorg/transfer/4C3D-8BCB.sh"
chymera@quiethost ~/.repositorg/transfer $ cat 4C3D-8BCB.sh
#!/usr/bin/env bash
touch ~/lalax.txt
cp "/run/media/chymera/NIKON D750/lala.txt" ~/
chymera@quiethost ~/.repositorg/transfer $ ls ~/lal*
/home/chymera/lalax.txt
chymera@quiethost ~/.repositorg/transfer $ ls /run/media/chymera/NIKON\ D750/
DCIM lala.txt NIKON001.DSC
Thêm giấc ngủ và chuyển hướng thực thi tập lệnh sang một khung con, dường như không hoạt động. Các tập tin không thể truy cập được, vì bây giờ automount bị ức chế hoàn toàn:
chymera@quiethost ~/.repositorg/transfer $ cat /etc/udev/rules.d/95-local.rules
ACTION=="add", KERNEL=="sd?1", ENV{ID_FS_UUID}=="4C3D-8BCB", RUN+="/bin/su chymera -c /home/chymera/.repositorg/transfer/_4C3D-8BCB.sh"
chymera@quiethost ~/.repositorg/transfer $ cat _4C3D-8BCB.sh
#!/usr/bin/env bash
nohup /bin/bash /home/chymera/.repositorg/transfer/4C3D-8BCB.sh & exit
chymera@quiethost ~/.repositorg/transfer $ cat 4C3D-8BCB.sh
#!/usr/bin/env bash
touch ~/lalax.txt
sleep 5
cp "/run/media/chymera/NIKON D750/lala.txt" ~/
chymera@quiethost ~/.repositorg/transfer $ ls ~/lal*
/home/chymera/lalax.txt
chymera@quiethost ~/.repositorg/transfer $ ls /run/media/chymera/