避免终端断掉,保存回话的方法
免疫宗
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 %1nohup 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/nullnohup 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的sessionscreen -ls -> 列出当前所有的sessionscreen -r yourname -> 回到yourname这个sessionscreen -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 是一个工具,用于在一个终端窗口中运行多个终端会话安装tmuxcentos、Redhat、Fedorayum install tmux Ubuntuapt-get install tmux 启动tmuxtmux 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