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?
Réalisé que je devais faire:
#!/bin/sh
echo /opt/script.sh | at now