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