さて、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で何かをするのはこれが初めてなので、私の理解はかなり薄いです。