避免终端断掉,保存回话的方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了避免终端断掉,保存回话的方法相关的知识,希望对你有一定的参考价值。

避免终端断掉,保存回话的方法
免疫宗
nohup命令

nohup命令可以将程序以忽略挂起信号的方式运行起来,被运行的程序的输出信息将不会显示到终端

命令格式

nohup 具体要执行的命令 [ & ]

nohup应用
nohup ping www.baidu.com &
[1] 18106
可以使用jobs来查看job ID对应的具体命令
jobs 
[1]+  Running                 nohup ping www.baidu.com &
使用fg加上jobID,讲后台命令调用至前台
fg %1
nohup ping www.baidu.com
如果我们运行了多个nohup,如果都输入到nohuo.out不方便查找,可以指定输出文件
nohup ping www.baidu.com >ping_baidu.txt &
标准输出和错误输出在同一个文件中
nohup ping www.baidu.omc >ping_baidu.txt 2&1 & 
如果输出的结果不重要可以输出到/dev/null
nohup ping www.baidu.com 2>/dev/null 1>&2 &
如何查看后台运行的结果
nohup rm /tmp/nonexist.file >nohup.out 2>&1 & 
echo $?
disown命令
如果命令之前忘记加nohup,而命令运行一半,通过作业调度和disown解决
如下所示:
ping www.baidu.com >output.txt    这时候忘记输入nohup
执行 bg把该作业放到后台
bg %1 
jobs 
执行disown命令,从作业中移除,不能用jobs查看
disown -h %1 
ps -ef | grep ping 可以查看
会话宗
setid命令

setid命令是能够让进程在一个新的会话中运行,从而避开当前会话的SIGHUP信号

setid ping www.ibm.com 
ps -ef | grep www.ibm.com
screen命令

Screen是一款由GNU计划开发的用于命令行终端切换的自由软件。用户可以通过该软件同时连接多个本地或远程的命令行会话,并在其间自由切换

命令格式:

screen [-AmRvx -ls -wipe][-d <作业名称>][-h <行数>][-r <作业名称>][-s ][-S <作业名称>]

选项:
-A  将所有的视窗都调整为目前终端机的大小
-d <作业名称>  将指定的screen作业离线
-h <行数>  指定视窗的缓冲区行数
-m  即使目前已在作业中的screen作业,仍强制建立新的screen作业
-r <作业名称>  恢复离线的screen作业
-R  先试图恢复离线的作业。若找不到离线的作业,即建立新的screen作业
-s  指定建立新视窗时,所要执行的shell
-S <作业名称>  指定screen作业的名称
-v  显示版本信息
-x  恢复之前离线的screen作业
-ls或--list  显示目前所有的screen作业
-wipe  检查目前所有的screen作业,并删除已经无法使用的screen作业。
常用的screen参数
screen -S yourname -> 新建一个叫yourname的session
screen -ls -> 列出当前所有的session
screen -r yourname -> 回到yourname这个session
screen -d yourname -> 远程detach某个session 
screen -d -r yourname -> 结束当前session并回到yourname这个session
screen应用
#创建一个新窗口
screen -S david 
screen -A -m  -d -S screen_ping ping www.baidu.com & 
# 列出当前会话
screen -ls
# 重新连接会话
screen -r 12865
tmux命令
Tmux 是一个工具,用于在一个终端窗口中运行多个终端会话
安装tmux
centos、Redhat、Fedora
yum install tmux 
Ubuntu
apt-get install tmux 
启动tmux
tmux new -s roclinux
在创建一个新的窗口
ctrl + b键同时,然后松开按c键
窗口之间的切换
ctrl + b键同时,然后松开按0键(按相应的数字键进行切换)
切断tmux与办公电脑的桥梁
ctrl + b键同时,然后松开按d键
tmux环境消失,只有一行提示
tmux new -s roclinux 
[detached]
查看tmux状态
mux ls 
roclinux: 3 windows (created Sat Sep  2 14:32:27 2017)
tmux a -t roclinux


以上是关于避免终端断掉,保存回话的方法的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段4——cli的终端命令大全

Linux终端回话记录和回放工具 - asciinema使用总结

tmux一个终端回话管理工具使用记录

需要一种有效的方法来避免使用 Laravel 5 重复代码片段

避免android片段中内存泄漏的最佳方法是啥

Session实例