我有一个可以写入和读取交互式终端的应用程序,当我通过 shell 运行它时,它会按预期工作。但是,当我将其作为 systemd 服务运行时,应用程序似乎没有捕获标准输出或标准错误。
我尝试将服务定义中的 StandardOutput 和 StandardError 修改为journal+console
和tty
。
我的 systemd 文件的服务部分如下所示:
[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