screen脚本化相关方法

  • 向screen中正在运行的程序发送按键消息

    比如screen中正在运行程序top,此时我想从另一个终端中向此screen中的top程序发送终止命令q

    # 新建一个名为top的screen并在其中运行top命令
    [root@localhost ~]# screen -S top
    [root@localhost ~]# top
    
    # 在另一个终端中运行下列指令,然后发现上述top进程终止了
    [root@localhost ~]# screen -S top -X stuff "q"
    # or
    [root@localhost ~]# screen -S top -X stuff "^C"
    # 当然也可以发送回车键
    [root@localhost ~]# screen -S top -X stuff "^M"
    
  • 在screen中启动程序

    比如,我想在脚本中在某个screen中启动top进程

    # 一定要带$,一定要使用单引号
    [root@localhost ~]# screen -S top -X stuff $'top\n'
    # or
    [root@localhost ~]# screen -S top -X stuff "top^M"
    
  • 记录screen屏幕日志,获取screen输出内容的一种方法

    screen可以使用-L选项来开启输出记录日志。若想获取最新的程序输出,可先清空记录日志,然后通过向screen中的程序发送更新输出的方法来实现。

    [root@localhost ~]# screen -L -S a
    # 执行一个命令,产生输出
    [root@localhost ~]# pwd
    /root
    # 查看日志
    [root@localhost ~]# screen -r -d a
    [root@localhost ~]# pwd
    /root
    

    这个方法有个缺点:当创建多个screen会话的时候,每个会话都会记录日志到screenlog.0文件。screenlog.0中的内容就比较混乱了。
    解决方法如下,让每个screen会话窗口有单独的日志文件。

    在screen配置文件/etc/screenrc最后添加下面一行:

    logfile /tmp/screenlog_%t.log    
    

    %t是指window窗口的名称,对应screen的-t参数。所以我们启动screen的时候要指定窗口的名称

你可能感兴趣的:(screen脚本化相关方法)