1、使用nohup命令: nohup <command> [argument…] & nohup可以屏蔽SIGHUP信号!
2、使用 screen命令。
打开一个ssh终端,执行screen,并回车,即可创建了一个新的虚拟终端
此时在上边执行的程序,如果遇到服务器断线是不会中断的,依然会在后台运行
当新的ssh连接到服务器后,执行screen -x 就可以连接到刚才的终端了
此外,利用screen建立的终端,还具有实时演示的效果。
比如两个用户A和B,分别从北京和上海使用SSH连接到一个服务器
A先执行screen建立好虚拟终端,B执行screen -x连接上来
这时候的虚拟终端是唯一的,就像二人都在显示器前一样
A键入的命令和显示的结果,B都可以实施看到
B键入的命令和输入结果,A也可以实施看到
注意:
1) 如果多次执行screen,则会建立多个虚拟终端。
当执行screen -x的时候,则会被询问,要连接到哪一个虚拟终端,如下所示:
There are several suitable screens on:
1408.pts-0.idc (Attached)
1382.pts-4.idc (Attached)
Type "screen [-d] -r [pid.]tty.host" to resume one of them.
这个时候,要执行screen -x <终端名>,就可以连接到需要的终端,例如
screen -x 1382.pts-4.idc,即可连接到名为1382.pts-4.idc的虚拟终端上。
2) 退出虚拟终端的方法:首先用screen -x连接到终端,然后执行exit即可退出当前终端。
1. $:screen 创建一个screen(可以用screen -S ID,打开一个指定的ID session)
2. $:screen -ls 显示所有的screen会话
3. $:screen -d 脱离当前screen ,返回正常shell
4. $:screen -r 6361(用session -ls可以得到)进入指定screen
参 数:
-A 将所有的视窗都调整为目前终端机的大小。
-d<作业名称> 将指定的screen作业离线。
-h<行数> 指定视窗的缓冲区行数。
-m 即使目前已在作业中的screen作业,仍强制建立新的screen作业。
-r<作业名称> 恢复离线的screen作业。
-R 先试图恢复离线的作业。若找不到离线的作业,即建立新的screen作业。
-s 指定建立新视窗时,所要执行的shell。
-S<作业名称> 指定screen作业的名称。
-v 显示版本信息。
-x 恢复之前离线的screen作业。
-ls或--list 显示目前所有的screen作业。
-wipe 检查目前所有的screen作业,并删除已经无法使用的screen作业。
* ctrl-a ctrl-a:在 Shell 间切换
* ctrl-a n:切换到下一个 Shell
* ctrl-a p:切换到上一个 Shell
* ctrl-a 0…9:同样是切换各个 Shell
* ctrl-a d:退出 Screen 会话