Linux 将正在运行的进程转到 tmux 会话中运行

参考:
链接: Move a running process into a tmux session
链接: reptyr - A tool for “re-ptying” programs.

Tmux是一个终端复用器(terminal multiplexer),属于常用的开发工具,学会了之后可以大大的提高工作效率。

1、 Tmux的作用

Tmux即实现会话与窗口的解绑

(1)它允许在单个窗口中,同时访问多个会话。这对于同时运行多个命令行程序很有用。

(2)它可以让新窗口"接入"已经存在的会话。

(3)它允许每个会话有多个连接窗口,因此可以多人实时共享会话。

(4)它还支持窗口任意的垂直和水平拆分。

1.1 基本概念

在使用tmux之前我们先了解关于tmux的几个名词:

session,会话(任务)
windows,窗口
pane,窗格
关于session,很多人把session成为会话,但我觉得叫任务更适合一些。

在普通的终端中,窗口和其中由于session(任务)而启动的进程是连在一起的,关闭窗口,session就结束了,session内部的进程也会终止,不管是否运行完。但是在具体使用中,我们希望当前的session隐藏起来,在终端中做其他事情,但是又不希望session及其进程被关闭。这样就需要用到tmux,对session进行解绑。之后再想继续出来这个session的时候,再次绑定就可以回到之前的工作状态。

对于window可以理解为一个工作区,一个窗口。

对于一个session,可以创建好几个window,对于每一个窗口,都可以将其分解为几个pane小窗格。

所以,关于session、window、pane的关系是:
[ p a n e ∈ w i n d o w ] ∈ s e s s i o n [pane \in window] \in session
[pane∈window]∈session

1.2 安装

# Ubuntu or Debian
sudo apt-get install tmux

# CentOS or Fedora
sudo yum install tmux

# Mac
brew install tmux

2. session操作

2.1 启动

新建session,可以在terminal上输入tmux命令,会自动生成一个id为0的session
tmux
也可以在建立时显式地说明session的名字,这个名字可以用于解绑后快速的重新进入该session:

tmux new -s your-session-name

2.2 分离

在tmux窗口中,按下ctrl+b d或者输入以下命令,就会将当前session与窗口分离,session转到后台执行:

tmux detach

2.3 退出

如果你想退出该session,可以杀死session:

tmux kill-session -t your-session-name

当然,也可以使用ctrl+d关闭该session的所有窗口来退出该session。

2.4 绑定、解绑、切换session

假设现在正处于session1,使用分离操作就是将session1进行解绑:

tmux detach

而如果你想再次绑定session1,可以使用命令:

tmux attach -t your-session-name

切换到指定session:

tmux switch -t your-session-name

2.5 重命名session

tmux rename-session -t old-session new-session

3 安装 reptyr

二级制安装

yum -y install reptyr

源码编译安装

$ git clone https://github.com/nelhage/reptyr.git
$ cd reptyr/
$ make
$ sudo make install

4 例子

开始一个长时间运行的过程,例如top

使用 CTRL-Z 将进程转到后台

在后台恢复进程:bg

显示您正在运行的后台作业jobs -l,这应该是这样的:

[1]+  4711 Stopped (signal)        top
 (-l 确保你会得到PID)

用disown top断绝进程与父级的关系。之后,jobs将不再显示工作,但ps -a会。

启动您选择的终端多路复用器,例如tmux

重新连接上后台进程:reptyr 4711

分离你的终端多路复用器(例如 CTRL-B D)并关闭 ssh

重新连接 ssh,连接到您的多路复用器(例如tmux attach)

  • 21
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值