linux不停往外发ssh包,LINUX使用SSH远程终端时,如何将运行时间长的程序在后台挂起,下次SSH登陆时继续使用同一个SHELL?...

我在某个平台上购买了一个云服务器,LINUX操作系统无图形化界面,硬盘空间较小。虽然在平台上可以通过其自带网页版VNC界面登陆SHELL进而操控云主机,但是每次需要操控都得打开网页登陆进平台,然后再进行一系列点击操作才能进入VNC界面,有点繁琐。并且有时出门在外,使用手机浏览器不是很好的兼容VNC界面,所以一般情况下我习惯于通过SSH客户端登陆SHELL。但是有个问题是,比如我想在云主机上运行一个神经网络训练程序,可能这个程序要跑12小时甚至更久,我不可能一直开着ssh客户端,但是我关闭了这个客户端,这个SHELL也随之湮灭了,训练进程也被杀了。所以我想有没有一种方法能在ssh中暂时将这个shell后台运行,然后下次登陆ssh时,可以将这个shell重新调回前台?通过万能的度娘,我找到了一个能实现功能的命令screen。

screen命令在Debian/Ubuntu系列系统中,可以直接通过apt下载:

sudo apt-get install screen

screen可以开启虚拟SHELL,在使用时,将其调到前台,当需要关闭ssh时,先将这个虚拟shell放在后台,当然,放到后台,在此shell中的程序将继续运行,产生的输出也会记录在这个虚拟shell中。下次再次登陆SSH时,通过命令将这个虚拟SHELL调到前台即可继续上次操作 ,并且程序产生的日志和控制台处处都不会丢。

当我们需要创建一个虚拟的SHELL窗口时,使用以下命令,shell_name可以选自己喜欢的名字:

screen -S shell_name

输入命令后, 窗口重新变为刚登陆时的状态:

e2d6b782173a14542617dccde2e56226.png

这个控制台就是新创建的虚拟SHELL了。我们在这个SHELL中创建一个新文件,然后对这个文件进行编辑。

4e7b8b8520f244cbf79d3b45a3a7a580.png

此时,文件还没编辑完,但是有其它事情需要处理,我们需要关闭SSH客户端。这时我们就需要将这个虚拟SHELL放到后台运行,依次按下这两个快捷键:

Ctrl+a d

37caef269ad5374852d74f42cd3525d9.png

我们重新返回了SSH为我们开辟的SHELL,并且在这个上面一行显示我们与5749.test分离,意思就是将这个名称为test、ID为5749的虚拟shell放在了后台。此时就可以安心关闭shell了。

在我们重新登陆上SSH时,怎样重新将这个虚拟SHELL调回前台呢?在这个之前,先说一下如何查看当前创建的所有虚拟SHELL:

screen -ls

61c1adf07b037020e359b4585148fa9e.png

我目前有两个虚拟SHELL,ID分别为5749和18969,状态均为detached。那么现在将ID为5749,也就是刚刚还没完成的那个文档所在的SHELL打开:

screen -r

acdc7314b85ec0c3852291231d1e8643.png

又重新回到了这个界面,我们可以继续编辑我们的文档。

这些就是基本用法,screen命令还有更多强大的用法,我把命令格式放在这里,供需要的朋友们查阅:

这里需要注意,在真实SHELL中,我们用控制台命令进行虚拟SHELL的控制;但是当虚拟控制台在前台时,我们需要用快捷键,快捷键均以Ctrl+A开始。

更全的命令参考这里。

---------在虚拟控制台之外可以用的命令----------

$> 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作业。

--------在虚拟控制台内可以用的快捷键-----------

C-a ? -> 显示所有键绑定信息

C-a c -> 创建一个新的运行shell的窗口并切换到该窗口

C-a n -> Next,切换到下一个 window

C-a p -> Previous,切换到前一个 window

C-a .. -> 切换到第 .. 个 window

Ctrl+a [Space] -> 由视窗0循序切换到视窗9

C-a C-a -> 在两个最近使用的 window 间切换

C-a x -> 锁住当前的 window,需用用户密码解锁

C-a d -> detach,暂时离开当前session,将目前的 screen session (可能含有多个 windows) 丢到后台执行,并会回到还没进 screen 时的状态,此时在 screen session 里,每个 window 内运行的 process (无论是前台/后台)都在继续执行,即使 logout 也不影响。

C-a z -> 把当前session放到后台执行,用 shell 的 fg 命令则可回去。

C-a w -> 显示所有窗口列表

C-a t -> time,显示当前时间,和系统的 load

C-a k -> kill window,强行关闭当前的 window

C-a [ -> 进入 copy mode,在 copy mode 下可以回滚、搜索、复制就像用使用 vi 一样

C-b Backward,PageUp

C-f Forward,PageDown

H(大写) High,将光标移至左上角

L Low,将光标移至左下角

移到行首

$ 行末

w forward one word,以字为单位往前移

b backward one word,以字为单位往后移

Space 第一次按为标记区起点,第二次按为终点

Esc 结束 copy mode

C-a ] -> paste,把刚刚在 copy mode 选定的内容贴上

一个优秀的SSH远程终端工具

SSH远程终端工具是一款在Windows界面下用来访问远端不同系统下的服务器,从而比较好的达到远程控制终端的目的.向我们操控集群的时候,如果每台机器都安装一个显示器和键盘也是一个不小的花费,而远程终端 ...

【Linux】使用xshell登陆时密码框为灰色,无法输入密码

使用xshell登陆时,出现以上情况,那么这到底值咋回事呢?经过查询以后发现是服务器端设置问题,解决办法如下: vi /etc/ssh/sshd_config 接着保存退出,然后重启sshd服务 se ...

linux 让程序在后台运行的几种可靠方法

我们经常会碰到这样的问题,用 telnet/ssh 登录了远程的 Linux 服务器,运行了一些耗时较长的任务, 结果却由于网络的不稳定导致任务中途失败.如何让命令提交后不受本地关闭终端窗口/网络断开 ...

linux启动后自动登录并运行自定义图形界面程序

在一文中提到linux启动在以后运行一个独占显示器的图形程序的两种办法. 1.不启动xserver,使 ...

Linux下如何让jar包程序在后台一直执行

Linux下如何让Jar包程序在后台一直执行 shell命令 nohup java -jar xxx.jar & &:让程序后台执行. nohub:让程序控制台输出转移到nohub.o ...

linux下删除大量文件提示参数过长解决办法

linux下删除大量文件提示参数过长解决办法:在当前目录下rm -rf * 在linux中删除大量文件时,直接用rm会出现:-bash: /bin/rm: 参数列表过长的错误. 这时可以用find命令 ...

linux nohup命令使程序在后台运行的方法

在linux操作系统中从后台一直运行某个程序的方法,就是使用nohup命令了. Unix/Linux下一般比如想让某个程序在后台运行,很多都是使用 & 在程序结尾来让程序自动运行. 比如要运行 ...

linux SIGSEGV 信号捕捉,保证发生段错误后程序不崩溃

在Linux中编程的时候 有时候 try catch 可能满足不了我们的需求.因为碰到类似数组越界 ,非法内存访问之类的 ,这样的错误无法捕获.下面我们介绍一种使用捕获信号实现的异常 用来保证诸如段错 ...

基于Linux ALSA音频驱动的wav文件解析及播放程序 2012

本设计思路:先打开一个普通wav音频文件,从定义的文件头前面的44个字节中,取出文件头的定义消息,置于一个文件头的结构体中.然后打开alsa音频驱动,从文件头结构体取出采样精度,声道数,采样频率三个重 ...

随机推荐

ExpressQuantumGrid4的cxGrid的一些使用方法和经验

使用cxGrid有一些时间了,在这里总结一下使用cxGrid的一些方法,希望给刚开始接触cxGrid的人一些帮助. 1.简单介绍:cxGrid右下方的cxGrid1Level1是表示Grid表的层,c ...

《第一行代码》(三: Android 百度地图 SDK v3.0.0)

百度地图的SDK变化较大,第一行代码里的demo已经不能用了,一直以为是代码类错误,害我花了很多时间,可以参考这位博主的:http://blog.csdn.net/lmj623565791/artic ...

再议extern和include的作用

先引入一下题啊,主要是看到有人这样写 我个人觉的这样写没什么意思,没有体现出了extern的特性.   为什么我要这样说,先谈谈include,总是有人觉得这个东西很神秘,很特殊不知道他干了什么.其实 ...

Session和Cookie的分析与区别

首先说一下Web.config文件中的cookieless="false"的理解 cookieless="false"表示: 如果用户浏览器支持cookie时启 ...

poj2月题解

竟然生日前一天poj破百,不错不错,加速前进! poj2437 由于泥泞不重叠,所以按其实左边排个序再统计一遍即可(如果不是刚好盖满就尽量往后盖) poj2435 细节bfs poj2230 求欧拉回 ...

JavaScript apply函数小案例

//回调函数1 function callback(a,b,c) { alert(a+b+c); } //回调函数2 function callback2(a,b) { alert(a+b); } / ...

转载:s:if的用法

转载网址:http://blog.csdn.net/menhuanxiyou/article/details/5709550 1:直接写表达式

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值