[转帖]reptyr, 将正在运行的程序转换为新终端
https://www.helplib.com/GitHub/article_45241 学习一下. 很抑郁的是 没有 arm64和龙芯平台的二进制文件.
- 源代码名称:reptyr
- 源代码网址:http://www.github.com/nelhage/reptyr
- reptyr源代码文档
reptyr源代码下载
- Git URL:
复制代码
git://www.github.com/nelhage/reptyr.git - Git Clone代码到本地:
复制代码
git clone http://www.github.com/nelhage/reptyr - Subversion代码到本地:
复制代码
$ svn co --depth empty http://www.github.com/nelhage/reptyr Checked out revision 1. $ cd repo $ svn up trunk
reptyr是一个用于获取现有运行程序并将它的附加到新终端的实用程序。 通过ssh启动了一个长期运行的进程,但是必须离开,不要中断它? 只需启动一个屏幕,使用reptyr抓取它,然后在主页上杀死ssh会话和头部。
用法
reptyr PID
"reptyr PID grab将获取带有 id PID的进程,并将它的附加到当前终端。
附加后,进程将从新终端输入输入并写入到新终端,包括^C和 ^Z。 ( 不幸的是,如果你背景的话,你仍然需要在旧终端运行"bg"或者"fg"。 在不修补 shell的情况下,可能不可能以合理的方式修复
典型用法 Pattern
- 启动一个长期运行的进程,比如
top - 使用 ctrl z 进行后台处理
- 在后台恢复进程:
bg - 使用
jobs -l显示正在运行的后台作业,这应该如下所示:[1]+ 4711 Stopped (signal) top- (
jobs -l中的-l确保你将获得 PID )
- Disown使用
disown top从当前父进程中删除作业。 在这里之后,jobs将不再显示任务,但是ps -a将。 - 启动你的终端多路复用器,比如
tmux - 重新附加到backgrounded进程:
reptyr 4711 - 分离终端多路复用器( 比如。 按住ctrl键并关闭 ssh
- 重新连接 ssh,连接到你的多路复用器( 比如。
tmux attach),快乐 !
但是等等这不是screenify"?
现在有一个叫做"screenify"的shell script 在 10年近于 internet,现在使用gdb到( 预计) 完成同样的工作。 区别在于reptyr工作得很好。
如果使用screenify附加"较少",它仍将从旧终端获取输入。 如果使用screenify附加一个ncurses程序并调整窗口大小,程序将不会注意到。 如果使用screenify附加进程,则新终端中的^C将无法工作。
我的reptyr解决了所有这些问题,并且是我知道的唯一这样的工具。 有关如何完成这里任务的更多详细信息,请参见下文。
端口
reptyr支持Linux和 FreeBSD。 并非所有功能都在FreeBSD上可用。 ( 尤其是FreeBSD目前不支持 reptyr -T。
在系统调用级别和终端 ioctl ( )的详细信息上,reptyr 使用ptrace附加到目标和控制它,因此高度依赖于系统调用 API。 从技术上讲,其他操作系统可能是可行的,但是需要对相关平台的低级别知识,并且可能需要大量的refactors。
reptyr在 i386,x86_64和ARM上工作。 到它的他架构的端口应该是简单的,在大多数情况下,如添加一个in文件并向 ptrace.c. 中添加子句。
Maverick ptrace_scope上的
reptyr 依赖于 ptrace 系统调用附加到远程程序。 在Ubuntu和更高版本上,由于安全原因,这种能力被禁用。 你可以通过执行以下操作临时启用它
# echo 0>/proc/sys/kernel/yama/ptrace_scope
作为 root,或者通过编辑文件/etc/sysctl. d/10-ptrace。conf,也包含了关于这里设置完成的更多信息。
reptyr--l
作为额外功能,如果运行"reptyr -l",reptyr将在从端创建一个新的伪终端对,并将它的输出输出输出到。
如果在gdb中调试程序,那么可以将该 NAME 传递给"设置劣质 pty"。 因为没有任何现有的程序听到这个 rtc,这将比传递 shell的现有终端更好。
:它是如何工作的?
reptyr做的主要事情就是它实际上改变了你正在连接的进程的控制终端。 我写了一个博客帖子,解释了所涉及的内容。
发音
我像"中继器"一样发音,但是因为这很容易明确,"re-p-t-y-er"也可以接受。
CREDITS
reptyr是由 Nelson Elhage nelhage@nelhage.com 公司编写的。 有问题或者 Bug 报告请与他联系。
电子邮件地址
[转帖]reptyr, 将正在运行的程序转换为新终端的更多相关文章
- java学习笔记(1)java的基础介绍 、JDK下载、配置环境变量、运行java程序
java工程师是开发软件的 什么是软件呢? 计算机包括两部分: 硬件: 鼠标.键盘.显示器.主机箱内部的cpu.内存条.硬盘等 软件: 软件包括:系统软件和应用软件 系统软件:直接和硬件交互的软件:w ...
- 运行python程序
1 在windows下运行python程序 1)从DOS命令行运行python脚本 用python解释器来执行python脚本,在windows下面python解释器是python.exe,我的pyt ...
- windows批处理运行java程序
明确需求 今天你编了一个java swing版照片查看器,想让计算机上的所有照片默认打开方式都改成你的照片查看器. 使用工具软件 很多工具软件都是不把jre打包到exe中的,这就是说打包之后的exe只 ...
- 在 Sublime Text 3 中配置编译和运行 Java 程序
参考网址:http://www.open-open.com/lib/view/open1388105023765.html 1. 设置 java 的 PATH 环境变量 2. 创建批处理或 Shell ...
- runas/cpau/lsrunase使用小结(以管理员运行指定程序)
企业环境中,为了安全起见一般都没有赋予域用户或者企业的PC客户端用户管理员权限. 但偶尔会有个别的程序一定需要管理员身份才能执行,如财务某些程序或专业的应用程序.那么如何不赋予用户管理员权限及密码但又 ...
- Windows 搭建 .NET 跨平台环境并运行应用程序
写在前面 阅读目录: Install .NET Version Manager (DNVM) Install .NET Core Execution Environment (DNX) Write t ...
- WINDOWS登录系统之前(欢迎界面)运行指定程序脚本服务
方法一:创建可在系统登录之前运行的服务 PS:需要用到两个程序—Srvany和Instsrv,点击 http://pan.baidu.com/share/link?shareid=4111024491 ...
- 在OSX和Windows版本Docker上运行GUI程序
看到很多人在Docker问题区讨论:如何在OS X和Windows的Docker上运行GUI程序, 随手记录几个参考资料: https://github.com/docker/docker/issue ...
- 【python】安装python第三方库lxml时,遇到问题:[ERROR: 'xslt-config' 不是内部或外部命令,也不是可运行的程序]
一.概述 lxml介绍http://lxml.de/ 二.问题 ERROR: 'xslt-config' 不是内部或外部命令,也不是可运行的程序 三.解决方法 Scrapy在Windows上的安装笔记 ...
随机推荐
- springboot使用jdbcTemplate案例
1 创建实体类 public class Student { private Integer stuid; private String stuname; public Integer getStui ...
- (尚021)Vue_eslint编码规范检查
1.eslint 1.1说明 1)ESLint是一个代码规范检查工具 2)它定义了很多特定的规则,一旦你的代码违背了某一规则,eslint会做出非常有用的提示 3)官网:http://eslint.o ...
- gj的zabbix客户端开机自启动设置
查看是否自启动 配置chkconfig 启动服务
- 使用 css/less 动态更换主题色(换肤功能)
前言 说起换肤功能,前端肯定不陌生,其实就是颜色值的更换,实现方式有很多,也各有优缺点 一.看需求是什么 一般来说换肤的需求分为两种: 1. 一种是几种可供选择的颜色/主题样式,进行选择切换,这种可供 ...
- Java面试集合(三)-30道面试题
前言 大家好,我是 Vic,今天给大家带来Java面试集合(三)的概述,希望你们喜欢 三 1.在Java中是否可以含有多个类?答:可以含有多个类,但只有一个是public类,public类的类名与文件 ...
- CSS — BEM 命名规范
推荐阅读: https://juejin.im/post/5b925e616fb9a05cdd2ce70d 1 什么是 BEM 命名规范 Bem 是块(block).元素(element).修饰符(m ...
- 关于集成通用mapper的Mybatis代码生成器产生的model类注解
主要是@Table.@Id.@GeneratedValue.@Column 4个注解 这四个注解都来自javax.persistence包,是Java持久层规范,单纯的Mybatis并不认识这四个注解 ...
- springboot带有进度条的上传
一.说明 最近要做文件上传,在网上找了很久都没有一个全面的示例,特此记录下来分享给大家. 1.文件上传接口可按照springboot默认实现,也可用commons-fileupload组件,本示例使用 ...
- EF 调试跟踪生成的SQL语句
IQueryable query = from x in appEntities select x; var sql = ((System.Data.Objects.ObjectQuery)query ...
- Python常用模块大全
Python常用模块大全 os模块: os.remove() 删除文件 os.unlink() 删除文件 os.rename() 重命名文件 os.listdir() 列出指定目录下所有文件 os.c ...