我在 Linux 上的 shell 中运行 python 进程。目前我无法物理访问这台机器,只能通过 ssh 连接。
我知道 python 进程已停止,我怀疑此 shell 中存在错误跟踪。
我可以获取 shell 的 pid,但我找不到显示此 shell 中内容的方法。基本上,我正在寻找一种方法来读取已经存在的内容,并且不会丢失此输出或关闭 shell。Linux 工具是什么,可以再次查看已在运行的 shell 中正在发生的事情?
答案1
答案2
虽然您无法查看已经发生的事情(除非您可以恢复该会话),但有一款名为的出色工具tmux
可以帮助您解决这个问题。
只需安装 ( sudo apt install tmux
),运行它 ( tmux
),然后在 tmux 终端内运行您想要的进程。然后按 Ctrl+B,再按 D,将其分离 - 这将使您返回到之前的 shell,您可以关闭终端。然后,从 SSH 连接到它或打开另一个终端(无论您喜欢什么)并运行tmux attach
。这将使您返回到您的终端。还有其他选项可供探索,但这是在不同的终端会话中使用 tmux 的基本形式。
答案3
记录终端会话的传统工具是script
。它在大多数 Unix 和类 Unix 系统上广泛可用,通常是默认的。
一些终端仿真器(xterm
当然包括)以及一些pc
经常在桌面机的所谓“控制台”设备(即直接连接的键盘和显示器)上使用的终端仿真器,确实有一个回滚缓冲区,您可以向后滚动以查看之前的活动,甚至可以从向后滚动的视图中复制和粘贴它。
事实上,这里的教训是(大多数)TTY 设备不会记录任何内容——它们只是传递信息。必须安排自己的记录,方法是启动script
或类似的记录工具,或使用适当的终端仿真器。
(顺便说一句,一些系统也有一个“控制台缓冲区”,但它只记录内核本身的输出,并且通常通过称为的命令来访问dmesg
。)