当前位置: 首页 > news >正文

[20181219]script使用小技巧.txt

[20181219]script使用小技巧.txt

--//前几天在使用strace时遇到问题,它的输出使用标准错误句柄.
--//我在想平时使用sqlplus如果输出字段很多,屏幕看起来一片混乱.
--//是否可以通过使用script记录操作,通过shell一些命令的功能实现更好的显示.通过例子说明:

1.环境:
--//首先启动scripts,加入-f参数的主要目的是马上输出,避免缓存的影响.
-f  Flush output after each write. This is nice for telecooperation: One person does 'mkfifo foo; script -f foo' and
    another can supervise real-time what is being done using 'cat foo'.

2.演示一:
--//session 1:
$ script -f /tmp/a.txt
Script started, file is /tmp/a.txt

--//登录数据库会话窗口,设置linesize大一些.
SCOTT@book> set linesize 20000
SCOTT@book> set pagesize 0

--//打开另外的终端窗口,执行:
--//session 2:
$ tail --line=500 -f /tmp/a.txt

--//这样就能看到刚才输入的命令.
--//千万注意不要执行script的会话终端查看/tmp/a.txt,这样会导致/tmp/a.txt迅速增大,相当于一个环.而且自己清楚那个窗口是输入命令,
--//那个是使用tail查看的窗口.
--//session 2:
$ tail --line=500 -f /tmp/a.txt | cut -c1-200

--//回到打开session 1:
SCOTT@book> set numw 12
SCOTT@book> select * from v$database;

--//session 2:
SCOTT@book> select * from v$database;
        DBID NAME                 CREATED             RESETLOGS_CHANGE# RESETLOGS_TIME      PRIOR_RESETLOGS_CHANGE# PRIOR_RESETLOGS_TIM LOG_MODE     CHECKPOINT_CHANGE# ARCHIVE_CHANGE# CONTROL CONTROLF
------------ -------------------- ------------------- ----------------- ------------------- ----------------------- ------------------- ------------ ------------------ --------------- ------- --------
  1337401710 BOOK                 2018-11-29 11:32:09            925702 2015-11-24 09:11:12                       1 2013-08-24 11:37:30 ARCHIVELOG          13816048396     13815976887 CURRENT 2018-11-

--//CONTROLFILE_CREATED字段被截断了,适当调出输出宽度就比较看到了.

3.演示二:
--//演示一仅仅显示前面一段也许不是我需要的信息.可以通过cut过滤输出特定的字段.
--//session 1:
SCOTT@book> set colsep |
--//这样就可以实现显示使用字符"|"分割.假设我现在要显示v$database视图中supp开头的字段.可以进行如下操作.

--//session 2:
$ tail --line=500 -f /tmp/a.txt | grep --binary-files=text SUPP
--//注意:grep 一定要加入--binary-files=text,因为typescript文件grep把它看成二进制文件,要把它当文本文件对待.
--//回到session 1:
SCOTT@book> @desc v$database
--//切换到session 2,看到如下输出:
   30      SUPPLEMENTAL_LOG_DATA_MIN                VARCHAR2(8)
   31      SUPPLEMENTAL_LOG_DATA_PK                 VARCHAR2(3)
   32      SUPPLEMENTAL_LOG_DATA_UI                 VARCHAR2(3)
   40      SUPPLEMENTAL_LOG_DATA_FK                 VARCHAR2(3)
   41      SUPPLEMENTAL_LOG_DATA_ALL                VARCHAR2(3)
   51      SUPPLEMENTAL_LOG_DATA_PL                 VARCHAR2(3)

--//这样可以确定显示字段的位置是30,31,32,41,50.奇怪SUPPLEMENTAL_LOG_DATA_MIN长度是8.按ctrl+c退出tail命令,打入如下:
$ tail --line=500 -f /tmp/a.txt | cut -d"|" -f1,2,30,31,32,40,41,51

--//回到session 1,执行如下:
SCOTT@book> select * from v$database;

--//session 2,看到如下:
SCOTT@book> select * from v$database;
        DBID|NAME                |SUPPLEME|SUP|SUP|SUP|SUP|SUP
------------|--------------------|--------|---|---|---|---|---
  1337401710|BOOK                |NO      |NO |NO |NO |NO |NO

--//另外有一些版本带有scriptreplay,可以参考链接:http://blog.itpub.net/267265/viewspace-1276764/
--//总之通过shell一些过滤命令显示自己需要的信息.
--//另外退出script后定期清理script的输出文件.

转载于:https://www.cnblogs.com/lfree/p/10150071.html

相关文章:

  • “寻梦之路 阿里之行”北城大数据学院学生代表团赴北京阿里中心参观
  • 二叉搜索树
  • BestCoder Round #1 第一题 逃生
  • Protobuf3语言指南
  • 智能网联汽车信息安全
  • C语言函数栈
  • weex踩坑之旅第一弹 ~ 搭建具有入口文件的weex脚手架
  • Ubuntu 14.04更新源
  • 在ASP.NET Core应用程序中使用分布式缓存
  • WinForm中TextBox 中判断扫描枪输入与键盘输入
  • 树莓派用上kodexplorer也能玩成私有网盘
  • 编写HTML和CSS几点心得
  • 常见高并发案例
  • HDU 1087 Super Jumping! Jumping! Jumping!
  • 一篇文章,教你学会Git
  • -------------------- 第二讲-------- 第一节------在此给出链表的基本操作
  • co模块的前端实现
  • JDK 6和JDK 7中的substring()方法
  • js正则,这点儿就够用了
  • Mysql5.6主从复制
  • nodejs调试方法
  • yii2中session跨域名的问题
  • 讲清楚之javascript作用域
  • 使用Gradle第一次构建Java程序
  • 使用阿里云发布分布式网站,开发时候应该注意什么?
  • 吐槽Javascript系列二:数组中的splice和slice方法
  • 小程序button引导用户授权
  • 小程序上传图片到七牛云(支持多张上传,预览,删除)
  • 运行时添加log4j2的appender
  • 正则表达式小结
  • 中文输入法与React文本输入框的问题与解决方案
  • Java性能优化之JVM GC(垃圾回收机制)
  • #数学建模# 线性规划问题的Matlab求解
  • (Mirage系列之二)VMware Horizon Mirage的经典用户用例及真实案例分析
  • (二)基于wpr_simulation 的Ros机器人运动控制,gazebo仿真
  • (非本人原创)我们工作到底是为了什么?​——HP大中华区总裁孙振耀退休感言(r4笔记第60天)...
  • (附源码)springboot掌上博客系统 毕业设计063131
  • (六)Hibernate的二级缓存
  • (每日持续更新)jdk api之FileReader基础、应用、实战
  • (三分钟了解debug)SLAM研究方向-Debug总结
  • (学习日记)2024.02.29:UCOSIII第二节
  • (循环依赖问题)学习spring的第九天
  • (转)Mysql的优化设置
  • (转)菜鸟学数据库(三)——存储过程
  • (转载)在C#用WM_COPYDATA消息来实现两个进程之间传递数据
  • .NET 5.0正式发布,有什么功能特性(翻译)
  • .Net CF下精确的计时器
  • .net framework profiles /.net framework 配置
  • .net mvc actionresult 返回字符串_.NET架构师知识普及
  • .Net 应用中使用dot trace进行性能诊断
  • .NET成年了,然后呢?
  • .NET国产化改造探索(一)、VMware安装银河麒麟
  • .net网站发布-允许更新此预编译站点
  • @entity 不限字节长度的类型_一文读懂Redis常见对象类型的底层数据结构
  • [2021]Zookeeper getAcl命令未授权访问漏洞概述与解决