Tự động hóa chuỗi lệnh gắn


9

Khi tôi kết nối một thiết bị (máy tính bảng, máy ảnh, ổ đĩa flash, ổ cứng ngoài) với máy tính xách tay của tôi với Linux, tôi thường gõ chuỗi lệnh sau.

$ ls /dev/sd*
Giả sử thiết bị của tôi là / dev / sdc
tùy $ sudo mkdir /media/my_flash
chọn tùy chọn$ sudo chmod 777 /media/my_flash
$ sudo mount /dev/sdc /media/my_flash

Sau đó tôi sẽ sao chép một số tập tin và

$ sudo umount /dev/sdc

Trình tự này đảm bảo với tôi rằng các tệp được sao chép và sẽ không có gì xấu xảy ra.

Bạn có thể cho tôi biết làm thế nào để tự động hóa chuỗi lệnh này? Vì vậy, tôi sẽ chỉ cắm thiết bị, nó sẽ nhận ra nó nên được gắn vào thư mục nào, sau đó tôi sẽ thực hiện một số chuyển tập tin và sau đó nó sẽ báo hiệu cho tôi (bằng một cách nào đó) tôi có thể rút phích cắm thiết bị không? Có một số cài đặt trong HĐH Linux cho việc này không?

Câu trả lời:


6

Thành phần hệ thống phản ứng với kết nối của thiết bị di động là Udev , như được đề cập bởi SHW . Ngay cả hướng dẫn udev cũng có thể hơi nản chí; Tôi sẽ chỉ cho bạn một vài ví dụ.

Có hai bước liên quan: liên kết tệp thiết bị (ví dụ /dev/sdc) với thiết bị phần cứng và gắn thiết bị để truy cập hệ thống tệp. Công việc của Udev là bước đầu tiên, mặc dù bạn có thể yêu cầu nó chạy một lệnh bên ngoài như mount.

Đối với các thiết bị di động đã biết, tôi thích sử dụng tên thiết bị chuyên dụng bên dưới /dev/removable(tên thư mục đó là quy ước cá nhân). Các quy tắc udev sau (sẽ được đặt /etc/udev/rules.d/my_removable_disks.rules) tạo các liên kết tượng trưng với các tên đã biết cho hai đĩa, cả hai đều được xác định bởi một thuộc tính của hệ thống tệp trên phân vùng 1:

KERNEL=="sd?", PROGRAM=="/sbin/blkid -o value -s UUID %N1", RESULT=="1234-5678", SYMLINK+="removable/foo"
KERNEL=="sd?", PROGRAM=="/sbin/blkid -o value -s LABEL %N1", RESULT=="Joe's disk", SYMLINK+="removable/joe"

Các phiên bản cũ hơn của udev có thể cần /udev/lib/vol_id -u %N1(cho UUID, -lcho nhãn) thay vì blkidcuộc gọi. Có nhiều thứ bạn có thể kết hợp, ví dụ ATTRS{vendor}=="Yoyodine", ATTRS{serial}=="XYZZY12345PDQ97"(thay vì PROGRAM==…, RESULT==…) để khớp với số nhà cung cấp và số sê-ri của thiết bị.

Sau đó, bạn có thể sử dụng một dòng như thế này trong /etc/fstab:

/dev/removable/joe  /media/joe  vfat  noauto,user

Nếu bạn thích gắn kết tự động, bạn có thể thêm một cái gì đó giống như , RUN="mkdir /media/foo && mount /dev/removable/foo /media/foo"dòng udev. Đừng quên umount /media/footrước khi rút phích cắm.


Cảm ơn giải pháp tuyệt vời. Tôi có LVM trên một số ổ đĩa ngoài, vì vậy chuỗi khen thưởng dài hơn (bao gồm cả kích hoạt VG, v.v.), bây giờ tôi thậm chí có thể thêm các tập lệnh sao lưu vào đây :).
Grzegorz Wierzowiecki

Bạn đọc thân mến - nếu bạn muốn biết về ATTRS có sẵn, hãy thử điều này với thiết bị của bạn:udevadm info --name=/dev/DEVICE --attribute-walk
Grzegorz Wierzowiecki

8

Bạn có thể làm điều này bằng cách viết một quy tắc UDEV, nó sẽ "chạy" tập lệnh bash trong các lệnh bash tương tự, bạn đã đề cập. Bất cứ khi nào bạn cắm các thiết bị đã nói, UDEV sẽ nhận ra điều này và bắt đầu hành xử theo quy tắc.

Để viết quy tắc, bạn có thể theo liên kết này .


Ooh tuyệt đó. Chưa biết điều đó - Đánh dấu liên kết và thêm nó vào tiết mục của tôi.
Shadur

Bạn có thể vui lòng cụ thể hơn? Những đoạn từ liên kết có liên quan đến tôi?
xralf

Có vẻ như thứ tôi đang tìm kiếm. Tôi chỉ không có thời gian để đọc nó tất cả những ngày này. Tôi sẽ nghiên cứu nó và dán câu trả lời đúng vào bình luận của bạn trong thời gian tôi sẽ hiểu nó. Cảm ơn
xralf

4

Hiện tại có một số trình tiện ích tự động gắn, cũng như pmountlệnh được dành riêng cho phép người dùng gắn các thiết bị di động bên dưới /mediamà không cần sudotruy cập.

Cả Gnome và KDE đều có tùy chọn tự động gắn khối lượng di động khi chúng được kết nối; tùy thuộc vào phân phối nào bạn đã cài đặt chức năng này thậm chí có thể mặc định là 'bật'.

Trong Gnome, các tùy chọn chi phối tính năng này có sẵn System -> Preferences -> Removable Media; Tôi không có kinh nghiệm gần đây với KDE.


Tôi muốn làm điều đó một cách độc lập trên Môi trường quản lý cửa sổ (như KDE, Gnome, v.v.) (Như thể X chưa bắt đầu).
xralf

Sau đó, bạn sẽ phải đọc liên kết mà SHW đã đăng và đọc khá nhiều tất cả.
Shadur
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.