screen命令 | tee命令

screen命令

通常,在远程终端窗口开一个任务,若在它执行期间不慎关掉窗口或者断开连接,那这个任务就会被杀掉,一切半途而废了。

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

1. 直接在命令行键入screen命令

[sjy@xxx ~]$ screen

2. Screen命令+要执行的程序(创建一个执行vim test.txt的新窗口会话,退出vim会退出该窗口/会话)

[sjy@xxx ~]$ screen vim test.txt

3. 最常用的是,Screen建立一个自定义名称的窗口会话

[sjy@xxx ~]$ screen -R myname

screen常用选项及示例

-d <作业名称>  将指定的screen作业离线。 
-r <作业名称>  恢复离线的screen作业。 
-R             先试图恢复离线的作业。若找不到离线的作业,即建立新的screen作业。 
-s             指定建立新视窗时,所要执行的shell。 
-S <作业名称>  指定screen作业的名称。
-v           显示版本信息。 
-x           恢复之前离线的screen作业。 
-ls或--list  显示目前所有的screen作业。 
-wipe        检查目前所有的screen作业,并删除已经无法使用的screen作业。
screen -S yourname       -> 新建一个叫yourname的session 
screen -ls               -> 列出当前所有的session 
screen -r yourname       -> 回到yourname这个session
screen -d yourname       -> 远程detach某个session
screen -XS yourname quit -> 删除yourname这个detached的session(wipe删不掉的)

给screen窗口发送的常用命令【C-a是Ctrl+A的快捷键】

C-a c  -> 创建一个新的运行shell的窗口并切换到该窗口 
C-a n  -> Next,切换到下一个 window 
C-a p  -> Previous,切换到前一个 window 
C-a d  -> detach,暂时离开当前session,将目前的 screen session (可能含有多个 windows) 丢到后台执行,并会回到还没进 screen 时的状态,此时在 screen session 里,每个 window 内运行的 process (无论是前台/后台)都在继续执行,即使 logout 也不影响。 
C-a k  -> kill window,强行关闭当前的 window

SIGHUP 信号:为什么关掉窗口/断开连接会使得正在运行的远端程序死掉

在Linux/Unix中,有这样几个概念:

· 进程组(process group):一个或多个进程的集合,每一个进程组有唯一一个进程组ID,即进程组长进程的ID。

· 会话期(session):一个或多个进程组的集合,有唯一一个会话期首进程(session leader)。会话期ID为首进程的ID。

会话期可以有一个单独的控制终端。与控制终端连接的会话期首进程叫做控制进程。当前与终端交互的进程称为前台进程组。其余进程组称为后台进程组。

挂断信号(SIGHUP)默认的动作是终止程序。当终端接口检测到网络连接断开,将挂断信号发送给控制进程(会话期首进程)。如果会话期首进程终止,则该信号发送到该会话期前台进程组。一个进程退出导致一个孤儿进程组中产生时,如果任意一个孤儿进程组进程处于STOP状态,发送SIGHUP和SIGCONT信号到该进程组中所有进程。

因此当网络断开或终端窗口关闭后,控制进程收到SIGHUP信号退出,会导致该会话期内其他进程退出。


tee命令

说明:tee命令会从标准输入设备读取数据,将其内容输出到标准输出设备,同时保存成文件。
参数: -a 或 --append  附加到既有文件的后面,而非覆盖它。
         -i-i 或 --ignore-interrupts  忽略中断信号。
           --version  显示版本信息。

[sjy@xxx ~]$pwd | tee a.out
/home/sjy
[sjy@xxx ~]$cat a.out
/home/sjy

创建一个视窗用于在后台执行程序,并将打印到视窗屏幕上的内容保存成文件,供后期查看。

[sjy@xxx ~]screen -S mysession | ./myprogram.sh | tee myprogram.log




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值