Это полностью не проверено (пока), может сработать.
После входа в систему (через SSH с PuTTY или любым другим) начните новый tmux
сеанс (я использую tmux
, но вы можете выбрать screen
), как если бы вы хотели работать в оболочке внутри него. Обычная команда tmux
будет работать, но давайте назовем сессию:
tmux new-session -s foo
Затем найдите PID вашего service
:
pidof service
и используйте, reptyr
чтобы подключить его к текущему терминалу, который находится внутри tmux
(я думаю, вам может понадобиться sudo
). Смотрите этот мой ответ для кратких характеристик reptyr
и что нужно сделать, чтобы это работало.
reptyr <pid>
Если вы хотите выйти из системы, сначала отсоедините с tmux
помощью Ctrl+ B, D( screen
это Ctrl+ A, D). Позже вы можете вернуться к этому терминалу с
tmux attach-session -t foo
так что нет необходимости использовать reptyr
снова до следующей перезагрузки.
Если бы я был вами, я бы tmux
сначала попытался запустить службу внутри, я ожидаю, что это напрямую свяжет его с TTY, предоставленным tmux
без systemd
настроек, связанных с TTY . Смотрите это: Как запустить tmux
/ screen
с systemd
> 230?
Что-то вроде:
… [Service] Type=oneshot RemainAfterExit=yes ExecStart=/usr/bin/tmux new-session -d -s foo /path/to/my/service User=username …
Если это работает, вам нужно будет работать tmux attach-session …
как нужный пользователь:
sudo -u username tmux attach-session -t foo