SystemD Units
-
Если RemainAfterExit=yes, то сервис будет считаться активным до явной остановки, даже если команда в ExecStart завершится. Посему, нужен RemainAfterExit=no
Этого достаточно в связке с Type=oneshot!
Если StopWhenUnneeded=yes то сервис будет остановлен, когда все зависящие от него юниты остановлены. Поскольку Before у Вас нет, то он будет остановлен после сработки.
У Вас два противодействующих условия, но StopWhenUnneeded сильнее) Какой убрать - смотрите сами.