В Ubuntu 14.04 у меня есть долго работающий bash-скрипт с простым правилом udev, который прекрасно работает следующим образом:
ACTION=="change", SUBSYSTEM=="block", RUN+="/opt/script.sh"
В Ubuntu 16.04 дела идут не так хорошо. Сценарий начинает выполняться, но затем его убивают до его завершения. Затем я попытался изменить свое правило udev, чтобы вызвать скрипт warapper, который бы отключил скрипт. Я попытался:
#!/bin/sh
nohup /opt/script.sh &
Затем я попытался:
#!/bin/sh
/opt/script.sh | at now
Безрезультатно.
Затем я попытался создать сервис systemd ...
ACTION=="change", SUBSYSTEM=="block", ENV{SYSTEMD_WANTS}=="justrunthescript.service"
/etc/systemd/system/justrunthescript.service
[Unit]
Description=Just run the script
[Service]
ExecStart=/opt/script.sh
В какой-то момент я запустил скрипт, но мой скрипт использует параметры udev, такие как $ ID_FS_TYPE, которые не пройти таким образом.
Я думаю, что то, что я хочу, довольно просто, просто вставьте диск и запустите мой скрипт из правила udev и не убивайте сценарий. Какой лучший способ пойти по этому поводу?
Понял, что мне нужно сделать:
#!/bin/sh
echo /opt/script.sh | at now