0%

终端窗口断开仍保持进程的若干方法

在命令行环境中,用户通常会打开一个终端窗口(terminal window),并在其中输入命令与计算机进行交互。这种交互过程被称为一次会话(session)。会话的一个关键特性是,终端窗口与在其中启动的进程紧密关联。具体而言,当终端窗口被打开时,会话随即启动;而当终端窗口关闭时,会话便会结束,且会话中运行的所有进程也会随之被终止。

例如,在通过 SSH 登录远程服务器时,用户在终端窗口中启动一个程序。若此时网络连接突然中断,当用户再次登录服务器时,会发现之前运行的程序已经停止。这是因为之前的会话在终端窗口关闭时已经结束,其中的进程也随之消失。
再如,有时用户需要在服务器上训练一个模型,该过程可能需要持续数小时。如果用户在服务器终端启动模型训练后想要关闭本地电脑,就会面临上述问题。

本文就该问题介绍几种在进程运行时可以随意关闭终端的方法。


Tmux(推荐)

Tmux的作用是将会话与窗口”解绑”,将它们彻底分离。窗口关闭时,会话并不终止,而是继续运行,等到以后需要的时候,再让会话”绑定”其他窗口。

基本用法

安装

1
sudo apt-get install tmux

新建会话

1
tmux new -s <session-name>

分离会话(不要使用exit,会直接删除会话)

1
tmux detach

查看所有会话

1
tmux ls

重新接入某个存在的会话

1
tmux attach -t <session-name>

切换会话

1
tmux switch -t <session-name>

重命名会话

1
tmux rename-session -t <session-name> <new-name>

简化流程

  1. 新建会话tmux new -s my_session
  2. 在 Tmux 窗口运行所需的程序。
  3. tmux detach将会话分离。
  4. 下次使用时,tmux ls查看会话名称,重新连接到会话tmux attach -t my_session

补充

  1. tmux在操作会话的时候可以使用名称或者是序号,建议使用名称,不容易混淆。
  2. 如果想在tmux会话中查看历史输出,同时按住control+b,松开后按英文格式的[键,然后就可以使用鼠标滚轮或者上下键查看。

screen

-------------本文结束感谢您的阅读-------------