Linux终端退出程序不退出解决方案(nohup/screen)

来源:互联网 发布:记录生活的软件 编辑:程序博客网 时间:2024/06/05 20:10
终端异常退出后,后台进程不关闭的解决办法:
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也可以实施看到

  因此,利用screen,还可以进行远程操作演示、培训等

  注意:

  1) 如果多次执行screen,则会建立多个虚拟终端。

  当执行screen -x的时候,则会被询问,要连接到哪一个虚拟终端,如下所示:

  [root@idc root]# 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.

  [root@idc root]#

  这个时候,要执行screen -x <终端名>,就可以连接到需要的终端,例如

  screen -x 1382.pts-4.idc,即可连接到名为1382.pts-4.idc的虚拟终端上。

  2) 退出虚拟终端的方法:首先用screen -x连接到终端,然后执行exit即可退出当前终端。


screen命令介绍
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作业。
Screen 操作快捷键
* ctrl-a c:创建一个新的 Shell
* ctrl-a ctrl-a:在 Shell 间切换
* ctrl-a n:切换到下一个 Shell
* ctrl-a p:切换到上一个 Shell
* ctrl-a 0…9:同样是切换各个 Shell
* ctrl-a d:退出 Screen 会话


原创粉丝点击