如何记录linux终端下的操作日志
如何记录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终端下的操作日志的更多相关文章
- linux终端下一些“风骚”的按键操作及Linux终端命令
linux终端下一些"风骚"的按键操作 <backspace> 删除 <ctrl-l> 清空屏幕, 相当于clear tab ...
- Linux终端下安装jdk
linux 终端下安装jdk(rpm方法) 1.下载jdk对应版本rpm文件(以下称为jdk.rpm) 放在对应文件夹下 2.使用命令给定权限 #chmod +x jdk.rpm 3.解压rpm文件 ...
- linux终端下 编译c语言程序
linux终端下,编译C语言程序步骤为: 采用vi进行源代码编写,编写完成后,:wq存盘退出,如: vi test.c 在命令行下,运行gcc编译程序,生成执行码,如: gcc -o test te ...
- Linux系统下分割tomcat日志
在Linux系统下,tomcat日志catalina.out并不会像window系统下,按日期进行重写备份,因此在Linux系统下会造成日志文件过大的情况,本文介绍采用 cronolog工具进行如在w ...
- Linux 终端下的颜色
Linux 终端下颜色的输出 在命令行下也能产生五颜六色的字体和图案,只需要加上一些颜色代码,例如 echo -e "\033[41;36m 红底绿字\033[0m" 其中41的位 ...
- 记录linux系统下所有用户的操作信息
在日常运维中,我们需要清楚服务器上每个用户登录后都做了哪些操作,我们需要记录下每个用户的操作命令.下面的内容设置可以实现在Linux下所有用户,不管是远程还是本地登陆,在本机的所有操作都会记录下来,并 ...
- 【夯实Mysql基础】MySQL在Linux系统下配置文件及日志详解
本文地址 分享提纲: 1. 概述 2. 详解配置文件 3. 详解日志 1.概述 MySQL配置文件在Windows下叫my.ini,在MySQL的安装根目录下:在Linux下叫my.cnf,该文件位于 ...
- 如何查看linux系统下的各种日志文件 linux 系统日志的分析大全
日志分类: 1. 连接时间的日志 连接时间日志一般由/var/log/wtmp和/var/run/utmp这两个文件记录,不过这 两个文件无法直接cat查看,并且该文件由系统自动更新,可以通过如下: ...
- linux 终端下敲ctrl-c时,到底发生了什么?(转)
通过telnet登录到单板,然后按ctrl-c会发生什么情况,流程是怎么样的? 在分析之前,先介绍tty的相关知识.我们可以认为,所有跟输入输出相关的操作,最终都由tty来接管.举例来说,当我们敲 l ...
随机推荐
- mysql远程访问 登录ERROR 1130: is not allowed to connect to this MySQL server解决办法
LINUX6.3 里装了mysql5.0.18 版本运行服务器. 提示错误为: ERROR 1130: Host '192.168.0.102' is not allowed to connect t ...
- ELK收集openstack日志
1.安装jdk 每个openstack服务器需要安装jdk,我安装的版本jdk-7u71-linux-x64.rpm 2.安装.配置Elastic Search install https://dow ...
- android studio 汉化 个性化 美化 快速操作项目 目录
韩梦飞沙 韩亚飞 313134555@qq.com yue31313 han_meng_fei_sha 汉化包 百度云盘 下载地址:https://pan.baidu.com/s/1pLjwy ...
- android 数据存储方式
韩梦飞沙 韩亚飞 313134555@qq.com yue31313 han_meng_fei_sha 1,文件 2,内容提供者 3,偏好设置 4,数据库 5,网络存储. 网络存储,就是上传到 ...
- 快速排序之C++实现
快速排序之C++实现 一趟快速排序的算法是: 1)设置两个变量i.j,排序开始的时候:i=0,j=N-1: 2)以第一个数组元素作为关键数据,赋值给key,即key=A[0]: 3)从j开始向前搜索, ...
- BZOJ 2302: [HAOI2011]Problem c [DP 组合计数]
2302: [HAOI2011]Problem c Time Limit: 30 Sec Memory Limit: 256 MBSubmit: 648 Solved: 355[Submit][S ...
- java集合之一(框架介绍)
本文转载自:http://www.cnblogs.com/skywang12345/p/3308498.html Java集合主要可以划分为4个部分:List列表.Set集合.Map映射.工具类(It ...
- Spring Boot 运作原理
Spring Boot 运作原理 1.Spring Boot 简介 SpringBoot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了 ...
- 给HTML初学者的三十条最佳实践
Nettuts +运营最困难的方面是为很多技能水平不同的用户提供服务.如果我们发布太多高级教程,我的新手用户将无法从中受益.相反也是如此.我们尽我们最大的努力,但如果你觉得你被忽略了请联系我们.这个网 ...
- Codeforces Round #298 (Div. 2) C. Polycarpus' Dice 数学
C. Polycarpus' Dice Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/534/p ...