日期:2014-05-16 浏览次数:20925 次
?? ??? ssh与telnet远程登录到Linux服务器的时候,经常需要执行一些运行时间较长的任务,但是为每一个任务开一个ssh会话窗口或telnet远程端口,会比较麻烦,并且对于运行时间比较长的任务,如果关闭窗口,任务就会中断。
??????? 对于不同的情形可以使用不同的解决方案:
??????? 1、只是将任务以后台方式运行,中间不会中断会话窗口。
??????? 这时候可以在任务后加&符号就可以将任务以后台方式运行,接下来就可以继续进行其他操作。
??????? 2、任务所有的输出为输出到窗口的标准输出
??????? 可以使用在任务前面加nohub,这样即使关闭了会话窗口,任务继续运行,可以使用jobs查看所有后台运行的任务,
fg %N可以杀掉该任务,N 为执行jobs命令后,结果中每一个任务的id。
??????? 3、对于比较复杂的情况就要使用screen
??????? #screen命令创建一个新的执行shell的窗口,在这个窗口中可以运行所有的shell命令。
??????? #screen vi /etc/passwd 是在新的窗口中执行vi命令,如果这时候想去做其他事情就可以使用ctrl+a+d组合键,将该任务独立化,及时ssh中断也不会影响任务的运行。其中ctrl+a可以将我们在键盘上键入的信息直接发送给screen,screen默认接受以CTRL+a开始的命令,这种情况较做键绑定,其中ctrl+a叫做命令字符。
?????? 其他与ctrl+a组合(简写为c-a)命令如下所示
?????? c-a ? 显示所有键绑定信息
?????? c-a? w? 显示所有窗口列表
?????? c-a c-a 切换到之前显示的窗口
?????? c-a c??? 新建一个可以执行shell命令的窗口并切换到该窗口
?????? c-a n?? 切换到下一个窗口
?????? c-a p?? 切换到前一个窗口
?????? c-a 0..9 切换到窗口0..9
?????? c-a a?? 发送c-a到当前窗口
?????? c-a d?? 暂时断开当前screen窗口会话
?????? c-a k?? 杀掉当前窗口
?????? c-a 【? 进入拷贝/回滚模式
???