Решение должно быть основано на systemd -, вам НЕ нужно редактировать /etc/fstab
с помощью systemd, зачем вам это? Вы просто монтируете раздел в зависимости от факторов, которые вы указали, и на этом останавливаетесь.
Я не понимаю, зачем вам редактировать /etc/fstab
, если systemd может смонтировать то, что вам нужно. Обратите внимание, что systemd откажется загружаться, если запись в /etc/fstab
недоступна. Это означает, что в системах с systemd /etc/fstab
следует использовать только для загрузки -основных статических файловых систем.
В современных системах ключ udev RUN
имеет несколько предостережений, связанных с ним.
Во-первых, вы не должны использовать его для запуска каких-либо -запущенных процессов, потому что это может заблокировать обработку других событий udev для того же устройства или любого устройства, которое зависит от него.
Второе предостережение заключается в том, что systemd-udevd.service
по умолчанию в современных дистрибутивах находится в изолированной среде :см. systemctl cat systemd-udevd.service
и SANDBOXING
главу man 5 systemd.exec
, чтобы увидеть точные параметры песочницы, применяемые в ваш дистрибутив. Но конечным результатом является то, что временные файлы udev могут быть спрятаны в его собственном пространстве имен, что может объяснить, почему вы их не увидите.
Я по-прежнему не могу заставить echo
писать в /tmp/
в самом правиле, но запуск одноразовой службы systemd работает.
/etc/udev/rules.d/99-kinesis.rules
:
SUBSYSTEM=="usb", ATTRS{idVendor}=="05f3", ATTR{idProduct}=="0007", ACTION=="add", TAG+="systemd", ENV{SYSTEMD_WANTS}="kinesis_custom.service"
/etc/sytemd/system/kinesis_custom.service
:
[Unit]
Description=Autorun actions for Kinesis keyboard
[Service]
Type=oneshot
ExecStart=sh -c "/bin/echo UDEVSYSTEMD >> /tmp/layout_kinesis.log"
RemainAfterExit=true
StandardOutput=journal
Я не уверен, что это так задумано, согласно песочнице, о которой упоминал @telcoM, но я полагаю, что могу с этим работать.