gpt4 book ai didi

linux - 在 udev 中替换 hal-get-property 和 hal-find-by-capability?

转载 作者:IT王子 更新时间:2023-10-29 00:42:02 27 4
gpt4 key购买 nike

我需要移植一个 bash 脚本,它使用已弃用的 HAL 工具,如 hal-get-propertyhal-find-by-capability去开发。 HAL声明 HAL 已合并到 udev,但我找不到有关如何将此脚本正确移植到 udev 的有用信息。

例子:如果我想要所有存储硬件的列表(带有 HAL),我可以运行

hal-find-by-capability --capability storage

这会给我一个 UDI(唯一设备标识符)列表,看起来像这样:

/org/freedesktop/Hal/devices/storage_model_Virtual_disk<br/>
/org/freedesktop/Hal/devices/storage_serial_00000000000000000001<br/>
/org/freedesktop/Hal/devices/platform_floppy_0_storage

如果我现在想知道是否 /org/freedesktop/Hal/devices/storage_model_Virtual_disk是可移动的我可以发出以下查询

hal-get-property --udi /org/freedesktop/Hal/devices/storage_model_Virtual_disk --key storage.removable

它会回答 truefalse .

所以我的问题是:
如果没有 HAL,我该如何做这些事情?
sysfsutils ( systool ) 可以工作,但它似乎不是合适的替代品。
这对 udevadm info 有效吗? ?

最佳答案

编辑后,您要做的事情就更加清晰了。首先,您必须找到要查询的设备。最简单的方法实际上是扫描 sysfs。如果要查询特定设备,只需将 udev 指向 sysfs 中描述该设备的位置。因此,如果您正在寻找 sdb,您可以通过 /block/sdb 或从 /dev/block 中选择正确的节点或类似的东西。如果你有你的设备路径,比如说 $DEVPATH,你可以这样做:

udevadm info --attribute-walk --name=$DEVPATH

这会泄露很多信息,包括可移除性。如果将 attribute-walk 替换为 query=property,则会显示另一组信息,但我无法在那里找到可移除性信息。

如果您想为多个设备执行此操作,findxargs 将成为您的 friend ,这基本上是您的hal-find-by-capability 替换,因为您只需要在 sysfs 中找到正确的文件夹即可。


根据您要做的事情,您可能还想阅读 udev rules ,它允许您在连接设备时触发脚本的执行(通过匹配 --attribute-walk 给出的值)。您还可以轻松设置所有权和权限等。

关于linux - 在 udev 中替换 hal-get-property 和 hal-find-by-capability?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13288299/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com