避免终端断掉,保存回话的方法
免疫宗
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