udev rules.d - monitor HDMI hot plug - script não está sendo executado

4

Estou tentando fazer com que um script seja executado toda vez que meu monitor HDMI é conectado e depois de fazer algumas leituras eu encontrei isso e nele me pede para criar 99-monitor-hotplug.rules e colocá-lo / etc / udev / rules .d e especifique qual script eu quero rodar. A regra é assim:

ACTION=="change", SUBSYSTEM=="drm", ENV{HOTPLUG}=="1", RUN+="/root/hotplug.sh"

Bem, eu fiz isso, mas o script não roda. Eu sei disso porque no roteiro tudo que eu tenho é:

#!/bin/bash
opera

Eu fiz o script deliberadamente tão simples para que eu possa ver que algo está acontecendo. Quando invoco o script a partir da linha de comando, o Opera é executado.

Veja o que acontece quando conecto e desconecto meu monitor HDMI quando o " udevadm monitor --property " está em execução:

monitor will print the received events for:
UDEV - the event which udev sends out after rule processing
KERNEL - the kernel uevent

KERNEL[730.834194] change   /devices/pci0000:00/0000:00:01.0/0000:01:00.0/drm/card1 (drm)
ACTION=change
DEVNAME=/dev/dri/card1
DEVPATH=/devices/pci0000:00/0000:00:01.0/0000:01:00.0/drm/card1
DEVTYPE=drm_minor
HOTPLUG=1
MAJOR=226
MINOR=1
SEQNUM=3245
SUBSYSTEM=drm

UDEV  [730.835499] change   /devices/pci0000:00/0000:00:01.0/0000:01:00.0/drm/card1 (drm)
ACTION=change
DEVNAME=/dev/dri/card1
DEVPATH=/devices/pci0000:00/0000:00:01.0/0000:01:00.0/drm/card1
DEVTYPE=drm_minor
HOTPLUG=1
ID_FOR_SEAT=drm-pci-0000_01_00_0
ID_PATH=pci-0000:01:00.0
ID_PATH_TAG=pci-0000_01_00_0
MAJOR=226
MINOR=1
SEQNUM=3245
SUBSYSTEM=drm
TAGS=:seat:uaccess:master-of-seat:
USEC_INITIALIZED=3217504

KERNEL[738.204082] change   /devices/pci0000:00/0000:00:01.0/0000:01:00.0/drm/card1 (drm)
ACTION=change
DEVNAME=/dev/dri/card1
DEVPATH=/devices/pci0000:00/0000:00:01.0/0000:01:00.0/drm/card1
DEVTYPE=drm_minor
HOTPLUG=1
MAJOR=226
MINOR=1
SEQNUM=3246
SUBSYSTEM=drm

UDEV  [738.206107] change   /devices/pci0000:00/0000:00:01.0/0000:01:00.0/drm/card1 (drm)
ACTION=change
DEVNAME=/dev/dri/card1
DEVPATH=/devices/pci0000:00/0000:00:01.0/0000:01:00.0/drm/card1
DEVTYPE=drm_minor
HOTPLUG=1
ID_FOR_SEAT=drm-pci-0000_01_00_0
ID_PATH=pci-0000:01:00.0
ID_PATH_TAG=pci-0000_01_00_0
MAJOR=226
MINOR=1
SEQNUM=3246
SUBSYSTEM=drm
TAGS=:seat:uaccess:master-of-seat:
USEC_INITIALIZED=3217504

Quando a regra foi adicionada, executei: sudo udevadm control --reload-rules

Alguém pode ajudar por favor? Eu tenho a sensação de que a regra pode estar incorreta e eu sou novo na criação de regras do udev. Estou executando o Ubuntu 16.04.

    
por rwx 23.06.2016 / 22:44

2 respostas

2

ópera? Ah não! RUN é apenas para tarefas de execução curta, o udev executa o comando em um ambiente confinado.

Nenhuma interface gráfica suportada, o daemon será eliminado logo após o término do processamento do evento.

Se você quiser apenas testar se a regra é acionada, tente o seguinte:

#!/bin/bash
date >> /root/myrule.log

Referência: man udev

  

EXECUTAR {type}

     

Isso só pode ser usado para tarefas de primeiro plano com execução muito curta.   Executar um processo de evento por um longo período de tempo pode bloquear   mais eventos para este ou um dispositivo dependente.

     

Iniciar daemons ou outros processos de execução longa não é apropriado   para udev; os processos bifurcados, separados ou não, serão   incondicionalmente morto após o término do tratamento do evento.

    
por user.dz 24.06.2016 / 01:45
0

user.dz 'answer funciona para mim apenas na primeira vez. Esta abordagem funciona sempre para mim:

KERNEL=="card0", SUBSYSTEM=="drm", ACTION=="change", ENV{DISPLAY}=":0", ENV{XAUTHORITY}="/home/marco/.Xauthority", RUN+="/bin/bash /root/hdmi_hotplug.sh"
    
por Marco Sulla 02.06.2018 / 13:14

Tags