対話型端末に書き込んで読み込むアプリケーションがありますが、シェルを介して実行すると期待どおりに機能します。しかし、systemdサービスとして実行すると、アプリケーションはstdoutまたはstderrをキャプチャしないようです。
サービス定義でStandardOutputとStandardErrorをjournal+console
修正してみましたtty
。
私のシステムファイルのサービスセクションは次のとおりです。
[Service]
ExecStart=/bin/bash -c "cd /somedir && python3 myapp.py"
ExecStop=
Restart=always
RestartSec=10
StandardOutput=tty
StandardError=tty
私もそれを設定しようとしましたが、TTYPath=/dev/tty2
運がありませんでした。
Ubuntu 16.04を実行しています。
編集:追加情報
このアプリケーションを実行すると、作成された対話型セッションは実際にアプリケーションを実行している端末で読み書きできません。独自の端末をエミュレートします。
こちらのリンクをご覧ください。
http://docs.paramiko.org/en/2.4/api/channel.html#paramiko.channel.Channel.get_pty
そしてここ:
http://docs.paramiko.org/en/2.4/api/channel.html#paramiko.channel.Channel.invoke_shell