如何记录linux终端下的操作日志
  在linux终端下,为方便检查操作中可能出现的错误,以及避免屏幕滚屏的限制,我们可以把操作日志记录下来。常用的工具有 screen,script,以及tee等,通过yum install安装。
  . screen — screen manager with VT100/ANSI terminal emulatio
  > screen -L
  这里是我们的操作
  > exit
  结束后会生成一个类似这样的文件名: screenlog.
  > more screenlog.
  这样可以查看你刚才进行的操作,发现可能存在的问题

  . script  — make typescript of terminal session
  > script
  我们的操作
  > exit
  生成一个这样的文件:typescript
  > more typescript
  这里查看我们进行的操作

  . tee –  read from standard input and write to standard output and files
  这个命令可以读取终端输入输出到终端或者文件中,有时候可以用来记录make等命令可能产生的输出到终端的大量内容输出到文件中去。这样可以方便记 录这些命令的日志。
  > make >& | tee make.log
  当然,我们也可以直接重定向到一个文件中
  > make > make.log
  PS: >&1是为了记录错误日志
  if you want to filter the control symbols, try to use the "col" command like this:
  $ cat screenlog. | col -b > screenlog
  or
  $ cat typescript | col -b > scriptlog
  还有一个比较好用的命令tail -f
  比如把输出定向到text
  ./run.sh>text
  tail -f  text 这个命令会follow输出定向文件的内容

关于script命令:在linux的世界里,你可能经常会遇到下面的问题:
、在用源码安装软件的时候,想要将安装过程以及编译信息记录下来,供自己研究或者给他人作为参考
、边思考边敲命令,不断执行一些程序,然后最终想要把这些零散敲出来的程序写成脚本

命令记录bash自己就可以做到,你可以使用history来查看,编译过程中的输出记录你也可以重定向到一个文件,然后再查看。可以怎么知道哪些输出是哪些命令的结果呢??在windows下可以找一个破解的屏幕记录软件以视频的方式记录下来,在linux下不用这么麻烦,一个命令就好---script.

script命令的语法很简单(CentOS 5自带,命令更新时间:2000年;其他系统应该也有,可能更新bug更少)
     script [-a] [-c COMMAND] [-f] [-q] [-t] [file]
 表示将记录输出到某文件,-t表示将命令的时间输出到文件,其他选项不是很重要,不过-f可以关注一下。

如何使用:
、最简单的使用方法
   $ script
   Script started, file is typescript
   $ xxxx各种命令、以及输出
   $ exit
   exit
   Script done, file is typescript
   该方法下终端信息记录到默认文件typescript中,这个时候你可以使用cat查看这个文件:
   $ cat typescript
   Script started on 2011年12月15日 星期四 14时11分30秒
   dongzhi@saturn ~ $ cd Desktop/
   dongzhi@saturn Desktop $ ls
   .pdf  .pdf  FEM  fk  gnome-terminal.desktop
   dongzhi@saturn Desktop $ cd fk
   dongzhi@saturn fk $ ls
   aseries.h  Complex.c  constants.h  fk    fk.pl        haskell.f  kernel.f  Makefile  prop.f
   radiats.h  sac.h    sample_input  st_fk         syn    tau_p.f  trav.f
   bessel.FF  Complex.h  fft.c        fk.f  futterman.f  hk         layer.h   model.h   radiats.c
   README     sacio.c  source.f      st_haskell.f  syn.c  trav
   dongzhi@saturn fk $ cd
   dongzhi@saturn ~ $ pwd
   /export/home/dongzhi
   dongzhi@saturn ~ $ exit
   exit
   Script done on 2011年12月15日 星期四 14时11分54秒
   cat的结果给出了你执行命令的开始结束时间以及具体的命令和输出。
   当然这可能无法满足你的要求。如果只是这样就可以我完全可以执行完命令之后把整个终端的内容选中复制粘
   贴就OK!这样的方法也可以,只是不够简单省事,当输出很多甚至“超屏”的时候以前的命令就看不到了。
   也许你会说,既然终端信息输出到文件了,那我直接查看文件不就可以了~
   $ vi typescript
   看一看pwd命令的输出结果:
   ^[];dongzhi@saturn:~^G[dongzhi@saturn ~]$ pa^H^[[Kwd^M
    exit^M
   平白无故多了很多乱七八糟的字符?这个就是最大的bug,script记录了几乎全部的字符,包括一些特殊的字
   符,比如换行、退格,比如文件夹显示的颜色信息。。。。
、更常用的方法:
   $ script -a logfile -t log.time
、关于vi时乱码的问题解决办法:
   在执行script之前首先要修改几个环境变量,如下
   $ export SHELL=/bin/sh
   $ export PS1="\u@\h \W $ "
   $ script -a logfile
   $ xxxxx各种命令操作。。。
   $ exit
   环境变量SHELL设置使用sh而不是bash,这样为什么可以成功我也不清楚,PS1是命令提示符,其语法参见相
   关文章。
   执行完之后还要记得将环境变量设置回来。
   得到的结果为
   Script started on 2011年12月15日 星期四 17时24分47秒
   dongzhi@saturn ~ $ ls^M
   backup  bin  data  Desktop  document  prog  split  tcltk  typescript^M
   dongzhi@saturn ~ $ cd Desktop/^H^[[K^H^[[K^H^[[K^H^[[K^M
   sh: cd: Desk: 没有那个文件或目录^M
   dongzhi@saturn ~ $ cd Desktop/^M
   dongzhi@saturn Desktop $ ls^M
   .pdf  .pdf  FEM  fk  gnome-terminal.desktop^M
   dongzhi@saturn Desktop $ cd fk^M
   dongzhi@saturn fk $ cd ..^M
   dongzhi@saturn Desktop $ ls^M
   .pdf  .pdf  FEM  fk  gnome-terminal.desktop^M
   dongzhi@saturn Desktop $ cd ^H^[[K^H^[[K^H^[[K^Gexit^M
   exit^M
   Script done on 2011年12月15日 星期四 17时25分11秒

、一些简化
   可以利用alias对上面的命令作简化,在.bashrc上修改即可。
   alias script='export SHELL=/bin/sh;export PS1="\u@\h \W $ ";script'
   将环境变量改回来也有简化,
   alias initscript='export SHELL=/bin/sh'
   使用时执行initscript即可。
、文件结尾^M的去除
   前面的文章介绍过,但是这里dos2unix最简单也最有效,其他方法好像都有问题。
、其他的乱码。。。
   去除^M之后还是会有乱码出现,这是由于操作过程中有退格等等特殊字符。这个问题还没有解决。。。
   不过现在只要细心敲键盘应该就不会出现什么bug了。

   其他特殊字符的问题不知道在新script版本中有没有得到解决

如何记录linux终端下的操作日志的更多相关文章

  1. linux终端下一些“风骚”的按键操作及Linux终端命令

    linux终端下一些"风骚"的按键操作 <backspace>  删除 <ctrl-l>     清空屏幕, 相当于clear tab            ...

  2. Linux终端下安装jdk

    linux 终端下安装jdk(rpm方法) 1.下载jdk对应版本rpm文件(以下称为jdk.rpm) 放在对应文件夹下 2.使用命令给定权限 #chmod +x jdk.rpm 3.解压rpm文件 ...

  3. linux终端下 编译c语言程序

    linux终端下,编译C语言程序步骤为: 采用vi进行源代码编写,编写完成后,:wq存盘退出,如: vi test.c 在命令行下,运行gcc编译程序,生成执行码,如: gcc  -o test te ...

  4. Linux系统下分割tomcat日志

    在Linux系统下,tomcat日志catalina.out并不会像window系统下,按日期进行重写备份,因此在Linux系统下会造成日志文件过大的情况,本文介绍采用 cronolog工具进行如在w ...

  5. Linux 终端下的颜色

    Linux 终端下颜色的输出 在命令行下也能产生五颜六色的字体和图案,只需要加上一些颜色代码,例如 echo -e "\033[41;36m 红底绿字\033[0m" 其中41的位 ...

  6. 记录linux系统下所有用户的操作信息

    在日常运维中,我们需要清楚服务器上每个用户登录后都做了哪些操作,我们需要记录下每个用户的操作命令.下面的内容设置可以实现在Linux下所有用户,不管是远程还是本地登陆,在本机的所有操作都会记录下来,并 ...

  7. 【夯实Mysql基础】MySQL在Linux系统下配置文件及日志详解

    本文地址 分享提纲: 1. 概述 2. 详解配置文件 3. 详解日志 1.概述 MySQL配置文件在Windows下叫my.ini,在MySQL的安装根目录下:在Linux下叫my.cnf,该文件位于 ...

  8. 如何查看linux系统下的各种日志文件 linux 系统日志的分析大全

    日志分类: 1. 连接时间的日志 连接时间日志一般由/var/log/wtmp和/var/run/utmp这两个文件记录,不过这 两个文件无法直接cat查看,并且该文件由系统自动更新,可以通过如下: ...

  9. linux 终端下敲ctrl-c时,到底发生了什么?(转)

    通过telnet登录到单板,然后按ctrl-c会发生什么情况,流程是怎么样的? 在分析之前,先介绍tty的相关知识.我们可以认为,所有跟输入输出相关的操作,最终都由tty来接管.举例来说,当我们敲 l ...

随机推荐

  1. java 代码中设置 临时 环境变量

    System.setProperty("hadoop.home.dir", "D:\\software\\software_install\\dev_install\\h ...

  2. String 的常用操作

    String 类,我可以不负责的说在 Java 中这个类应该是使用最频繁的类了.然而关于它的常用的操作,我却不甚了解.整理这个东西很反人性的,这些方法,你看到他的时候感觉很简单,但是真正用的时候还是不 ...

  3. Redis和MySQL数据一致中出现的几种情况

    1. MySQL持久化数据,Redis只读数据 redis在启动之后,从数据库加载数据. 读请求: 不要求强一致性的读请求,走redis,要求强一致性的直接从mysql读取 写请求: 数据首先都写到数 ...

  4. 使用补丁修改DSDT/SSDT [DSDT/SSDT综合教程]

    请尊重原贴作者 与 本贴楼主.原作者把自己丰富的经验分享给了大家,本贴作者每个贴子平均花了3个小时翻译.      所以,转载请注明出处:原贴地址:http://www.tonymacx86.com/ ...

  5. quote函数什么意思,怎么用

    转自: https://blog.csdn.net/qiqiyingse/article/details/70046543 quote函数 属于urllib库里面的一个函数 屏蔽特殊的字符.比如如果u ...

  6. python opencv3 cornerHarris 角点检测

    git:https://github.com/linyi0604/Computer-Vision 角点也是处在一个无论框框往哪边移动 框框内像素值都会变化很大的情况而定下来的点 如果框框水平方向上移动 ...

  7. luoguP4783 [模板]矩阵求逆 线性代数

    求\(n^2\)的矩阵的逆 翻了翻题解,看到了初等矩阵这个东西,突然想起来在看线代的时候看到过.... 然后又温习了一遍线性代数的知识 不妨设\(PA = E\),其中\(P\)是一堆初等矩阵的积(必 ...

  8. Windows 0day成功验证之ETERNALBLUE

    本帖由春秋首发~作者:神风 @春秋文阁负责人 方程式又一波0day[该贴有工具]:https://bbs.ichunqiu.com/thread-21736-1-1.html 最近一段时间出现一波高潮 ...

  9. 详解Android基本布局

    一.线性布局 LinearLayout又称为线性布局,是一种非常常用的布局.这个布局会将它包含的控件在线性方向上依次排列.我们可以通过指定它的orientation属性来决定它是垂直方向排列还是水平方 ...

  10. Set常用子类特点

    HashSet:       重写   hashCode和equals方法                                        特点:无序,唯一      底层结构是:    ...