udev rule triggers but any run command fails

В bash вы можете использовать синтаксис косвенного раскрытия параметров :

test="Monkey in the middle..."
read -p "Enter input: " input
echo ${!input}

В этом случае пользователь должен предоставить test только строка без предшествующего знака доллара.

6
30.10.2017, 17:33
3 ответа

У меня была аналогичная проблема, когда сценарий, который я передал в RUN, не работал. Проблема связана с разрешениями, примененными в файле systemd -udevd.service. Вам нужно будет отключить некоторые из этих разрешений. Мое решение было извлечено из этого обсуждения .

Конечным содержимым файла /lib/systemd/system/systemd -udevd.service в моем случае былоследующим образом:

[Service]
Type=notify
OOMScoreAdjust=-1000
Sockets=systemd-udevd-control.socket systemd-udevd-kernel.socket
Restart=always
RestartSec=0
ExecStart=/lib/systemd/systemd-udevd
KillMode=mixed
WatchdogSec=3min
TasksMax=infinity
MountFlags=slave
MemoryDenyWriteExecute=yes
RestrictRealtime=yes
RestrictAddressFamilies=AF_UNIX AF_NETLINK AF_INET AF_INET6e

Быстрое решение, предложенное в приведенной мной ссылке, состоит в том, чтобы закомментировать последние семь строк следующим образом:

[Service]
Type=notify
OOMScoreAdjust=-1000
Sockets=systemd-udevd-control.socket systemd-udevd-kernel.socket
Restart=always
RestartSec=0
ExecStart=/lib/systemd/systemd-udevd
#KillMode=mixed
#WatchdogSec=3min
#TasksMax=infinity
#MountFlags=slave
#MemoryDenyWriteExecute=yes
#RestrictRealtime=yes
#RestrictAddressFamilies=AF_UNIX AF_NETLINK AF_INET AF_INET6e

Более длительное решение состоит в том, чтобы изучить влияние каждого из закомментированных флагов и закомментировать только те, которые применимы к вашим требованиям. Затем перезагрузите и перезапустите службу с помощью следующих команд или перезагрузите пи:

# systemctl daemon-reload
# systemctl restart systemd-udevd.service
0
27.01.2020, 20:29

У меня была та же проблема (Сбой сценария с кодом выхода 1 при подключении любого USB-накопителя ). Я просто закомментировал строку RestrictRealtime=yes, и теперь все работает нормально.

0
27.01.2020, 20:29

В моем случае я получил ту же ошибку systemd-udevd[123456]: 2-2: Process 'touch /tmp/test.txt' failed with exit code 1.из /var/log/syslog.

SUBSYSTEM=="usb", ACTION=="add", RUN+="touch /tmp/test.txt"

Но когда я изменил touchна /usr/bin/touch, проблема исчезла.

SUBSYSTEM=="usb", ACTION=="add", RUN+="/usr/bin/touch /tmp/test.txt"
0
22.05.2021, 14:50

Теги

Похожие вопросы