2.8 screen命令

回复 收藏
应用场景:
有时候,我们也许会有这样的需求,要执行一个命令或者脚本,但是需要几个小时甚至几天。这就要考虑一个问题,就是中途断网或出现其他意外情况,执行的任务中断了怎么办?你可以把命令或者脚本丢到后台运行,不过也不保险。下面就介绍两种方法来避免这样的问题发生。



使用nohup


[root@localhost ~]# cat /usr/local/sbin/sleep.sh
#! /bin/bash
sleep 1000
[root@localhost ~]# nohup sh /usr/local/sbin/sleep.sh &
[1] 19997
[root@localhost ~]# nohup: 忽略输入并把输出追加到"nohup.out"

直接加一个 ‘&’ 虽然丢到后台了,但是当退出该终端时很有可能这个脚本也会退出的,而在前面加上 nohup 就没有问题了,nohup的作用就是不挂断地运行命令。

screen工具的使用



简单来说,screen是一个可以在多个进程之间多路复用一个物理终端的窗口管理器。screen中有会话的概念,用户可以在一个screen会话中创建多个screen窗口,在每一个screen窗口中就像操作一个真实的SSH连接窗口那样。


1)打开一个会话,直接输入screen命令然后回车,进入screen会话窗口。
如果你没有screen命令,请用 yum install -y screen 安装

[root@localhost ~]# screen
screen -ls 查看已经打开的screen会话

[root@localhost ~]# screen -ls
There is a screen on:
        20001.pts-0.localhost   (Attached)
1 Socket in /var/run/screen/S-root.


Ctrl +a 再按d退出该screen会话,只是退出,并没有结束。
结束的话输入Ctrl +d 或者输入exit



退出后还想再次登录某个screen会话,使用sreen -r [screen 编号],
这个编号就是上例中那个20001. 当只有一个screen会话时,后面的编号是可以省略的。
当你有某个需要长时间运行的命令或者脚本时就打开一个screen会话,然后运行该任务。
按ctrl +a 再按d退出会话,不影响终端窗口上的任何操作。


创建新的screen时,指定自定义名称:
[root@localhost ~]# screen -S aming


要想进入该screen,可以直接screen -r aming
















2016-06-02 17:25 举报
已邀请:
0

zjjjjy

赞同来自:

{:7_202:}
0

gh0st

赞同来自:

{:5_132:}

回复帖子,请先登录注册

退出全屏模式 全屏模式 回复
评分
可选评分理由: