cuốn sách gpt4 ai đã làm

linux - Buộc ngắt kết nối ổ USB bằng cách đóng các ứng dụng đang mở theo chương trình

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-04 05:51:33 27 4
mua khóa gpt4 Nike

Tôi muốn tất cả các ổ USB tự động ngắt kết nối khi tôi rút bộ chuyển nguồn AC ra khỏi máy tính xách tay. Nếu một ứng dụng đang mở đang chặn thiết bị thì ứng dụng đó sẽ bị tắt. Sau khi mọi thứ đã được tắt và ngắt kết nối, âm thanh tín hiệu sẽ phát ra để cho biết rằng hiện tại đã an toàn để rút phích cắm.

Trường hợp sử dụng là để nhanh chóng lấy và sử dụng máy tính xách tay của bạn mà không cần loay hoay với giao diện người dùng để ngắt kết nối tất cả các ổ đĩa nhưng tránh việc gỡ cài đặt không sạch sẽ.

Mọi lời khuyên về cách bắt đầu đều tuyệt vời, cảm ơn bạn!

trả lời

Để có tập lệnh sao chép và dán đầy đủ, hãy xem câu trả lời của tôi bên dưới.

Nếu thiết bị USB của bạn được gắn vào /mount/media, hãy làm như sau:

kill -9 $(lsof -t $(mount | grep "/mount/media" | cut -d " " -f 1)) # Thoát khỏi quá trình chặn umount một cách rõ ràng
kill $(lsof -t $(mount | grep "/mount/media" | cut -d " " -f 1)) # Buộc tiêu diệt các tiến trình đang mở còn lại
umount $(mount | grep "/mount/media" | cut -d " " -f 1) # Ngắt kết nối ổ USB

Hãy cẩn thận với điều này vì nếu bạn chưa bật ứng dụng chặn lsofsẽ trả lại tất cảpidbạn sẽgiếtHệ điều hành bạn đang chạy. Xem tập lệnh sao chép và dán bên dưới để biết cách triển khai hoạt động xử lý tình huống này.

Sau đó, bất cứ khi nào rút bộ chuyển nguồn AC, hãy thêm dòng này vào /etc/udev/rules.d để gọi kịch bản này

SUBSYSTEM=="power_supply", ACTION=="change", ATTR{online}=="0" , RUN+="/path/to/script/shown/above"

Câu trả lời của Nuetrino bên dưới cho thấy cách phát hiện sự kiện rút phích cắm nguồn AC, câu trả lời này: Làm cách nào để biết quy trình nào đang ngăn chặn umount?Hiển thị cách liệt kê và loại bỏ tất cả các quy trình đang chặn việc ngắt kết nối thiết bị (Tôi thành công hơn khi sử dụng lsof so với fusionr -c, đôi khi không liệt kê các quy trình nào mặc dù umount vẫn bị chặn)

Chi tiết

sử dụngmàn hình udevadmGhi nhật ký sự kiện, ví dụ:

KernEL[20154.545075] thay đổi /devices/LNXSYSTM:00/LNXSYBUS:00/ACPI0003:00/power_supply/ADP0 (power_supply)

và sau đó sử dụngthông tin udevadm -a -pNhận thuộc tính thông qua các sự kiện

thông tin udevadm -a -p /devices/LNXSYSTM:00/LNXSYBUS:00/ACPI0003:00/power_supply/ADP0
nhìn vào thiết bị '/devices/LNXSYSTM:00/LNXSYBUS:00/ACPI0003:00/power_supply/ADP0':
KERNEL=="ADP0"
SUBSYSTEM=="power_supply"
NGƯỜI LÁI XE==""
ATTR{trực tuyến}=="0"
ATTR{type}=="Chính"

Bây giờ bạn có thể đặt quy tắc udev với các thuộc tính ưa thích của mình như hiển thị bên dưới.

câu trả lời hay nhất

Bạn có thể xác định quy tắc udev để thực hiện việc này.

Chỉ cần đặt quy tắc của bạn vào /etc/udev/rules.d

Đây là một ví dụ của tôi mà tôi sử dụng để kiểm soát độ sáng khi tháo bộ chuyển nguồn AC.

SUBSYSTEM=="power_supply", ACTION=="change", ATTR{online}=="0" , RUN+="/usr/local/bin/bright_unplug"
SUBSYSTEM=="power_supply", ACTION=="change", ATTR{online}=="1" , RUN+="/usr/local/bin/bright_replug

Khi tôi nhận được uvent kernel, tôi chạy các tập lệnh tùy chỉnh "bright_replug" và "bright_unplug".

Bạn có thể sử dụngmàn hình udevadm

màn hình sẽ in các sự kiện nhận được cho: UDEV - sự kiện mà udev gửi đi sau khi xử lý quy tắc KERNEL - sự kiện kernel

Bạn có thể sử dụngthông tin udevadmđể phù hợp với nhiều thuộc tính hơn

Về linux - buộc ngắt kết nối ổ USB bằng cách đóng các ứng dụng đang mở theo chương trình, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/34242611/

27 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress