记录终端输出的LOG到文件

先要说明为什么要记录终端会话,因为常会遇到这样的情况,终端是有缓存大小限制的,当在终端打印的消息超出缓存范围,它前面的打印消息就自动丢失了,这对于我们调试程序会造成障碍,所以有记录完整终端打印消息的必要!

1使用script记录Linux终端会话

script是大多数Linux产品util-linux软件包的一部分。

script记录会话的一切内容:你输入的内容和你看到的内容。它甚至记录颜色;因此如果你的命令提示符或程序输出中包含颜色,script将记录它。

要使用script,简单执行以下命令:

$ script

默认情况下,它向当前目录的typescript文件中写入内容。然后,你输入的一切内容都被记录到那个文件中。要往另一个文件中记录日志,只需使用script/path/to/file命令。

完成记录后,输入exit退出。这个命令将关闭script会话并保存文件。现在你可以使用cat或其它任何程序来检查日志文件。

Ubuntu/或者其他linux下运行,

script screen.log

开始记录,

记录屏幕信息到screen.log里,一直记录到你exit为止,记录屏幕log的好方法…

结束记录:

exit

使用实例

  1. aulyp@ubuntu:/home/workspace/Android_eclair_smdk6410$ sudo script screen.log //¿ªÊ¼¼Ç¼

  2. [sudo] password for aulyp:

  3. Script started, file is screen.log

  4. root@ubuntu:/home/workspace/android_eclair_smdk6410# sudo make clean

  5. ============================================

  6. PLATFORM_VERSION_CODENAME=REL

  7. PLATFORM_VERSION=2.1

  8. TARGET_PRODUCT=generic

  9. TARGET_BUILD_VARIANT=eng

  10. TARGET_SIMULATOR=

  11. TARGET_BUILD_TYPE=release

  12. TARGET_ARCH=arm

  13. HOST_ARCH=x86

  14. HOST_OS=linux

  15. HOST_BUILD_TYPE=release

  16. BUILD_ID=ERD79

  17. ============================================

  18. Cleaning out/target/product/generic...

  19. Cleaning out/target/common...

  20. Cleaning out/host/linux-x86...

  21. Cleaning out/host/common...

  22. Clean.

  23. root@ubuntu:/home/workspace/android_eclair_smdk6410# exit //Í˳ö¼Ç¼

  24. exit

  25. Script done, file is screen.log

  26. aulyp@ubuntu:/home/workspace/android_eclair_smdk6410$

已经找到了解决方法,异常退出也没有问题,仍然记录log,需要加上参数,script -f ido.log,如果在一个终端上使用mkfifo ido.log;script -f ido.log 然后在另一个终端登录,找到这个ido.log文件,你tail -f 就会滚动输出你操作的内容..这个非常方便…

2.使用script的缺点在于,它记录所有特殊的字符;因此你输入的文件中将充满控制字符和ANSI转义序列。你可以在script中使用一个非常简单的shell来解决这个问题:

SHELL=/bin/bash PS1=”$ ” script

使用script时,不要使用交互式程序或处理窗口的程序,如vior top。它们会破坏会话的输出结果。另外,日志文件会记录你使用的任何命令行程序和你完成一项任务所采取的步骤。如果你需要在脚本中编辑一个文件,考虑退出script会话,然后用script –a(它在旧会话后添加新会话)对文件进行编辑后再重新启动会话。

上一篇:花里胡哨,如何在Linux终端输出带有颜色的字体,将带颜色的字体赋值给变量


下一篇:ios 将Log日志重定向输出到文件中保存