日期:2014-05-16  浏览次数:20925 次

linux系统后台运行任务

?? ??? 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 【? 进入拷贝/回滚模式







???