• 保存终端打印信息


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

    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.  
    2. aulyp@ubuntu:/home/workspace/android_eclair_smdk6410$ sudo script screen.log //¿ªÊ¼¼Ç¼
    3.  
    4. [sudo] password for aulyp:
    5.  
    6. Script started, file is screen.log
    7.  
    8. root@ubuntu:/home/workspace/android_eclair_smdk6410# sudo make clean
    9.  
    10. ============================================
    11.  
    12. PLATFORM_VERSION_CODENAME=REL
    13.  
    14. PLATFORM_VERSION=2.1
    15.  
    16. TARGET_PRODUCT=generic
    17.  
    18. TARGET_BUILD_VARIANT=eng
    19.  
    20. TARGET_SIMULATOR=
    21.  
    22. TARGET_BUILD_TYPE=release
    23.  
    24. TARGET_ARCH=arm
    25.  
    26. HOST_ARCH=x86
    27.  
    28. HOST_OS=linux
    29.  
    30. HOST_BUILD_TYPE=release
    31.  
    32. BUILD_ID=ERD79
    33.  
    34. ============================================
    35.  
    36. Cleaning out/target/product/generic...
    37.  
    38. Cleaning out/target/common...
    39.  
    40. Cleaning out/host/linux-x86...
    41.  
    42. Cleaning out/host/common...
    43.  
    44. Clean.
    45.  
    46. root@ubuntu:/home/workspace/android_eclair_smdk6410# exit //Í˳ö¼Ç¼
    47.  
    48. exit
    49.  
    50. Script done, file is screen.log
    51.  
    52. 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(它在旧会话后添加新会话)对文件进行编辑后再重新启动会话。

    能力决定舞台,业绩体现价值,财富回报才智! 不积跬步,无以至千里;不积小流,无以成江海! 千里之行,始于足下。改变现在,就是改变未来。改变未来,从现在开始。
  • 相关阅读:
    LAMP环境搭建博客
    PHP项目中经常用到的无限极分类函数
    在PHP项目中,每个类都要有对应的命名空间,为什么?
    一键解决docker pull hello-world的问题
    网盘10M速度下载-亿寻下载器
    《提问的智慧》
    idea出现 Error:(1, 1) java: 非法字符: 'ufeff'解决方式
    多线程的四种实现方式
    Java中的get()方法和set()方法
    Java构造器(构造方法/constructor)
  • 原文地址:https://www.cnblogs.com/general001/p/2877605.html
Copyright © 2020-2023  润新知