您的位置:首页 > 其它

让程序可以在断开ssh连接后接着运行 screen

2016-05-31 20:47 204 查看
 就几个命令  screen  #打开新的工作窗口;
                     screen -S name  #新建一个名字为name的session

                     screen  -ls #查看存在的工作窗口

                     ctrl+a+d   #detached

                     screen -r  xxxx#切换到要选择的工作窗口 

                      kill掉screen命令    screen -ls 查看进程号
                                                    kill -9 xxxx
                                                    screen -wipe
                                                    screen -ls  确认kill掉
                     screen -ls 
                     screen -D -r xxxx  (如果是attached状态可以利用这个命令恢复窗口)
                    
http://www.xzcblog.com/post-126.html http://www.cnblogs.com/mchina/archive/2013/01/30/2880680.html
但是问题来了,因为Transmission和aMule都有图形界面,所有下载文件都比较方便,可是Wget就不一样了,因为没有图形界面所以只 能登录ssh来下载,可是如果下载的文件比较大,等待的时间比较长,就必须等待它执行完毕,在此期间可不能关掉窗口或者断开连接,否则这个任务就会被杀 掉,一切半途而废了。

为了解决这个问题,上网查了半天资料总算在这里找到了解决办法:

文中介绍了screen这个软件,我们可以通过这个软件来管理命令。具体的方法我就不说了,大家可以到上面的这个网站自己看看,我就说说简单的基本应用。

安装screen:

ubuntu

1
sudo
 
apt-get 
install
 
screen
openwrt

1
opkg
update
2
opkg 
install
 
screen
screen的使用方法:

1.直接在命令行键入screen命令

1
root@DreamBox:~
#
screen
Screen将创建一个执行shell的全屏窗口。你可以执行任意shell程序,就像在ssh窗口中那样。在该窗口中键入exit退出该窗口,如果这是该screen会话的唯一窗口,该screen会话退出,否则screen自动切换到前一个窗口。

2.Screen命令后跟你要执行的程序。

1
root@DreamBox:~
#
screen wget http://xxx.xxx/xxx
3.以上两种方式都创建新的screen会话。我们还可以在一个已有screen会话中创建新的窗口。在当前screen窗口中键入
C-a c
,即Ctrl键+a键,之后再按下c键,screen 在该会话内生成一个新的窗口并切换到该窗口。

screen还有更高级的功能。你可以不中断screen窗口中程序的运行而暂时断开(detach)screen会话,并在随后时间重新连接(attach)该会话,重新控制各窗口中运行的程序。

例如,我们打开一个screen窗口编辑/tmp/abc文件:
[root@tivf06 ~]# screen vi /tmp/abc

 

之后我们想暂时退出做点别的事情,比如出去散散步,那么在screen窗口键入
C-a d
,Screen会给出detached提示



暂时中断会话



半个小时之后回来了,找到该screen会话:
[root@tivf06 ~]# screen -ls
There is a screen on:
16582.pts-1.tivf06      (Detached)
1 Socket in /tmp/screens/S-root.

 

重新连接会话:
[root@tivf06 ~]# screen -r 16582

 

看看出现什么了,太棒了,一切都在。继续干吧。

你可能注意到给screen发送命令使用了特殊的键组合C-a。这是因为我们在键盘上键入的信息是直接发送给当前 screen窗口,必须用其他方式向screen窗口管理器发出命令,默认情况下,screen接收以C-a开始的命令。这种命令形式在screen中叫 做键绑定(key binding),C-a叫做命令字符(command character)。

管理你的远程会话

先来看看如何使用screen解决SIGHUP问题,比如现在我们要ftp传输一个大文件。如果按老的办法,SSH登录到 系统,直接ftp命令开始传输,之后。。如果网络速度还可以,恭喜你,不用等太长时间了;如果网络不好,老老实实等着吧,只能传输完毕再断开SSH连接 了。让我们使用screen来试试。

SSH登录到系统,在命令行键入screen。
[root@tivf18 root]# screen

 

在screen shell窗口中输入ftp命令,登录,开始传输。不愿意等了?OK,在窗口中键入C-a d:

管理你的远程会话



然后。。退出SSH登录?随你怎样,只要别杀掉screen会话。

是不是很方便?更进一步,其实我们可以利用screen这种功能来管理你的远程会话,保存你所有的工作内容。你是不是每次 登录到系统都要开很多窗口,然后每天都要重复打开关闭这些窗口?让screen来帮你“保存”吧,你只需要打开一个ssh窗口,创建需要的screen窗 口,退出的时候C-a d“保存”你的工作,下次登录后直接screen -r <screen_pid>就可以了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: