我在某个平台上购买了一个云服务器,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
输入命令后, 窗口重新变为刚登陆时的状态:
这个控制台就是新创建的虚拟SHELL了。我们在这个SHELL中创建一个新文件,然后对这个文件进行编辑。
此时,文件还没编辑完,但是有其它事情需要处理,我们需要关闭SSH客户端。这时我们就需要将这个虚拟SHELL放到后台运行,依次按下这两个快捷键:
Ctrl+a d
我们重新返回了SSH为我们开辟的SHELL,并且在这个上面一行显示我们与5749.test分离,意思就是将这个名称为test、ID为5749的虚拟shell放在了后台。此时就可以安心关闭shell了。
在我们重新登陆上SSH时,怎样重新将这个虚拟SHELL调回前台呢?在这个之前,先说一下如何查看当前创建的所有虚拟SHELL:
screen -ls
我目前有两个虚拟SHELL,ID分别为5749和18969,状态均为detached。那么现在将ID为5749,也就是刚刚还没完成的那个文档所在的SHELL打开:
screen -r
又重新回到了这个界面,我们可以继续编辑我们的文档。
这些就是基本用法,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:直接写表达式