有时在处理一些耗时很长的事情时,我仍然会忘记打开tmux或screen会话。我开始担心ssh断开连接或其他事情。
因此,一个明显的解决方案是终止进程,并在新创建的tmux或screen会话中运行它——但是,如果进程运行了一段时间,而我不想终止它,因为我要么失去进度,要么最终陷入混乱,该怎么办?与其终止并重新运行进程,不如将其移动到tmux或screen会话中更加顺畅。这涉及到更改进程的父进程,这并不是一件简单的事情,但谢天谢地nelhage为此开发了一个工具: reptyr
。
至于用法,非常简单:
- 使用
Ctrl-Z
暂停相应的进程 - 使用
bg
将作业发送到后台 - 使用
disown %1
从shell中夺走所有权 - 启动或进入tmux/screen会话:
tmux/screen
- 查找进程的PID:
pgrep myappname
- 运行
reptyr PID
将进程附加到当前的shell中
安装 reptyr
二级制安装
yum -y install reptyr
源码编译安装
$ git clone https://github.com/nelhage/reptyr.git
$ cd reptyr/
$ make
$ sudo make install
<<<<<< [完] >>>>>>