Considere o uso de uma regra udev
em vez de um serviço systemd
para iniciar seu script.
Algo parecido com isto em /etc/udev/rules.d/99-serial-logger.rules
:
SUBSYSTEM=="tty", ACTION=="add", KERNEL=="ttyUSB0", RUN+="/serial_script.sh"
Ou se você quiser manter o script como um serviço systemd (por exemplo, para permitir que ele seja controlado usando o comando systemctl
), remova a linha WantedBy=default.target
do seu serviço e torne sua regra udev
assim:
SUBSYSTEM=="tty", KERNEL=="ttyUSB0", TAG+="systemd", ENV{SYSTEMD_WANTS}+="your-serial-logger.service"
Como resultado, udev
deve informar systemd
para iniciar seu serviço quando o dispositivo aparecer e pará-lo se / quando o dispositivo for removido.