我有一个 systemd 服务文件,它在另一个 tty 中运行 java 程序
[Unit]
Description=java program
After=network-online.target
[Service]
Type=simple
ExecStart=/usr/bin/java -cp "/home/user/someclass.jar"
Restart=always
RestartSec=10
StandardInput=tty-force
StandardOutput=inherit
StandardError=inherit
TTYPath=/dev/tty10
TTYVTDisallocate=yes
TTYReset=yes
TTYVHangup=yes
[Install]
WantedBy=multi-user.target
该程序等待 tty 中的输入,我可以使用 Ctrl+Alt+F10 或使用 更改为该 tty chvt 10
,并且我能够与该程序交互。
现在我想发送输入并从该 tty 获取输出而不更改我当前的 tty。我尝试使用screen
,但得到的只是一个空白屏幕。我尝试使用,script
如果我在该 tty 中运行 bash,则成功,但如果我运行 java 程序,则失败
答案1
该PTY
功能socat
可能是您以编程方式连接终端密集型应用程序而无需任何额外功能的最佳选择。请参阅手册页中的示例。
此外,还dtach
提供screen
类似(多路)重新附加语义,以便从终端仿真器轻松访问。