Гаразд, тому у мене є програма (яку я не писав і не можу змінювати), яку я запускаю як службу, використовуючи systemd
на своєму хмарному сервері Ubuntu 16.04. Це чудово працює, за винятком того, що мені потрібно вміти взаємодіяти із запущеною програмою, і єдиний спосіб, яким програма підтримує взаємодію з нею, є через stdin
/ stdout
. Я усвідомлюю, що служба досить нетрадиційна використовувати лише введення командного рядка, але я не бачу іншого вибору.
З того, що я прочитав тут , можна сказати сервісу використовувати TTY для stdin
і stdout
, і тому я думаю, що я налаштував свою службу, щоб зробити саме це:
[Unit]
Description=My Service
After=getty@tty2.service
[Service]
Type=simple
ExecStart=/path/to/my/service
StandardInput=tty
StandardOutput=tty
TTYPath=/dev/tty2
TTYReset=yes
TTYVHangup=yes
Restart=always
RestartSec=5
User=username
[Install]
WantedBy=multi-user.target
Як тільки моя служба працює (і так, вона точно працює), я намагаюся використовувати screen
команду в PuTTY, щоб переглянути, /dev/tty2
як описано в цій відповіді :
sudo screen /dev/tty2
Однак, коли я це роблю, все, що я бачу в PuTTY, - це порожній екран, без виводу, з яким я не можу взаємодіяти. (І так, програма генерує багато результатів під час роботи.)
Тож я не впевнений, куди я помилився, чи це в конфігурації сервісу, моєму використанні screen
команди чи в самій PuTTY. Я взагалі не надто досвідчений користувач Linux, і я вперше щось роблю з TTY, тому моє розуміння досить тонке.