![如果我不知道程序来自 ps 或 tty,如何使用“screen”命令?](https://linux22.com/image/68963/%E5%A6%82%E6%9E%9C%E6%88%91%E4%B8%8D%E7%9F%A5%E9%81%93%E7%A8%8B%E5%BA%8F%E6%9D%A5%E8%87%AA%20ps%20%E6%88%96%20tty%EF%BC%8C%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%E2%80%9Cscreen%E2%80%9D%E5%91%BD%E4%BB%A4%EF%BC%9F.png)
我正在制作一个在启动时启动的 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`