web-dev-qa-db-fra.com

Longue exécution du script udev sur Ubuntu 16.04

Sur Ubuntu 14.04, j'ai un long script bash avec une simple règle udev qui fonctionne parfaitement comme ceci:

ACTION=="change", SUBSYSTEM=="block", RUN+="/opt/script.sh"

Sous Ubuntu 16.04, les choses ne se passent pas très bien. Le script commence à s'exécuter mais est ensuite tué avant la fin. J'ai ensuite essayé de changer ma règle udev pour appeler un script warapper qui détacherait le script. J'ai essayé:

#!/bin/sh
Nohup /opt/script.sh  &

Puis j'ai essayé:

#!/bin/sh
/opt/script.sh | at now

En vain.

J'ai ensuite essayé de créer un service 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

Je dois exécuter le script à un moment donné, mais mon script repose sur des paramètres udev tels que $ ID_FS_TYPE qui ne sont pas transmis de cette façon.

Je pense que ce que je veux est assez simple, il suffit d'insérer un disque et d'exécuter mon script à partir d'une règle udev sans tuer le script. Quelle est la meilleure façon de s'y prendre?

4
Benjamin Bryan

Réalisé que je devais faire:

 #!/bin/sh
 echo /opt/script.sh | at now
3
Benjamin Bryan