udev:两条规则之间的交流

时间:2019-04-11 13:04:16

标签: udev

是否有一种简单的方法可以在两个不同的规则之间进行交流, 一个用于ADD事件,另一个用于BIND事件在同一设备上?

首先执行ADD规则,然后执行BIND规则。我想根据ADD规则设置的变量来更改BIND规则的行为。

到目前为止我尝试过的事情:

  • 我尝试在ADD规则上使用ENV{variable}="1",并在BIND规则上使用ENV{variable}=="1"对其进行匹配。不幸的是,此变量在BIND规则中不再可用,看起来这些ENV变量的生存期仅限于同一设备和同一操作上的那些规则(因此,仅ADD规则)。

    ACTION=="add", ENV{MODALIAS}=="abc", \
    ENV{variable}="1"
    
    ACTION=="bind", ENV{MODALIAS}=="abc", \
    ENV{variable}=="1"
    
    ACTION=="bind", ENV{MODALIAS}=="abc", \
    ENV{variable}=="2"
    

    我一直认为ENV变量在udev中随处可见,但这似乎是错误的...

  • 我还尝试在ADD规则中设置ATTR{foo}="bar",并使用ATTRS{foo}=="bar"在BIND规则中对其进行匹配。也不起作用。

    ACTION=="add", ENV{MODALIAS}=="abc", \
    ATTR{variable}="1"
    
    ACTION=="bind", ENV{MODALIAS}=="abc", \
    ATTRS{variable}=="1"
    
    ACTION=="bind", ENV{MODALIAS}=="abc", \
    ATTRS{variable}=="2"
    

    我不知道为什么这行不通。


  • 到目前为止,唯一可行的方法是将变量的值echo放入ADD规则中的文件中(使用RUN),然后使用{在BIND规则中将其读出{1}}和PROGRAM

    RESULT

还有其他想法吗?

这是https://superuser.com/questions/1424242/udev-communicate-between-two-rules的副本-不幸的是,我认为超级用户不是正确的提问位置。

0 个答案:

没有答案