如果我不知道程序来自 ps 或 tty,如何使用“screen”命令?

如果我不知道程序来自 ps 或 tty,如何使用“screen”命令?

我正在制作一个在启动时启动的 python 程序。我希望这样我可以通过“屏幕”命令与该程序进行交互。然后,如果我需要通过不同的 tty、ssh 或其他方式与程序对话,那么我就可以做到。

我喜欢保留它,这样我就可以使用 bash 脚本将屏幕附加到我的终端中,而不必查找它在哪里 - 因为我需要其他人(不使用终端)能够访问它。

答案1

附加到正确屏幕会话的最可靠方法是让 Python 脚本写入指定文件以报告screen它正在哪个会话中运行。可以将其视为类似于 PID 文件,只不过您报告的是 TTY 而不是进程 ID。否则,如果screen存在多个会话,就会涉及猜测。

因此,在启动 Python 进程时,运行

echo "$STY" > /var/run/python-proc.screen

…或者从Python程序本身内部,

with open('/var/run/python-proc.screen', 'w') as f:
    print(os.environ['STY'], file=f)

然后,用户可以通过运行附加到它

screen -x -m `cat /var/run/python-proc.screen`

相关内容