Bir blok aygıtının değişiklik eylemine bağlı olan ve belirli bir komut dosyasını çalıştıran varolan bir udev kuralını geçiriyorum.
SUBSYSTEM=="block", ENV{DEVNAME}=="/dev/sr0", ACTION=="change", RUN+="/usr/local/bin/script"
Bu yapılandırmada udev, ID_CDROM_MEDIA-0
ve gibi donanım aygıtıyla ilişkili ortam değişkenlerini geçti ID_FS_LABEL
. O zamandan beri udev kuralını donanım değişikliği konusunda bir hizmet başlatmak için systemd kullanacak şekilde güncelledim.
SUBSYSTEM=="block", ENV{DEVNAME}=="/dev/sr0", ACTION=="change", TAG+="systemd", ENV{SYSTEMD_WANTS}=="drive-change.service"
Systemd servis dosyası:
[Unit]
Description=changes to dvd drive
[Service]
Type=oneshot
ExecStart=/usr/local/bin/script
[Install]
WantedBy=multi-user.target
Bu noktada servis değişiklik olaylarında çalıştırılır, ancak udev'deki RUN komutu tarafından iletilen ortam değişkenleri hizmetin yürütülmesine geçilmez.
Ortamı udev'den sistemd'in yürütme ortamına geçirmek mümkün mü yoksa açıkça parametreleri geçmem gerekiyor mu?