Isso é totalmente não testado (ainda), pode funcionar.
Depois de efetuar login (via SSH com PuTTY ou qualquer outro), inicie uma nova sessão tmux (eu uso tmux , mas você pode escolher screen ), como se você quisesse trabalhar em um shell dentro dele. O comando simples tmux funcionará, mas vamos nomear a sessão:
tmux new-session -s foo
Em seguida, encontre o PID do seu service :
pidof service
e use reptyr para anexá-lo ao seu terminal atual que está dentro de tmux (eu acho que você pode precisar de sudo também). Veja esta minha resposta para características curtas de reptyr e o que fazer para que funcione.
reptyr <pid>
Se você quiser sair, primeiro desanexe de tmux com Ctrl + B , D (para screen é < kbd> Ctrl + A , D ). Mais tarde você pode retornar a esse terminal com
tmux attach-session -t foo
Portanto, não é necessário usar reptyr novamente até a próxima reinicialização.
Se eu fosse você, tentaria executar o serviço dentro de tmux em primeiro lugar, espero que isso seja diretamente vinculado ao TTY fornecido por tmux sem as configurações systemd relacionadas a TTY. Veja isto: Como executar tmux / screen com systemd > 230?
Algo como:
…
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/bin/tmux new-session -d -s foo /path/to/my/service
User=username
…
Se isso funcionar, você precisará executar tmux attach-session … como o usuário certo:
sudo -u username tmux attach-session -t foo