Итак, у меня есть программа (которую я не написал и не могу изменить), которую я запускаю в качестве службы, используя 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, поэтому мое понимание довольно слабое.