- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章Linux 记录会话过程的命令由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
在Unix系统维护中,有时候系统工程师希望能够记录下会话的过程。如在测试一个系统功能的时候,工程师就希望将测试的步骤都一一的纪录下来。以便出现问题时利用这份资料进行追踪分析。如有时候在制作培训文档的时候,可能也需要这些会话记录,以方便培训师制作PPT等培训文档。总之就是一句话,系统工程师现在想要记录某个会话的过程,在Unix系统中能否实现?
1、script命令的主要作用于特点.
在Windows操作系统中,读者可能用过一些屏幕记录软件,可以将某段时间的操作通过视频的形式记录下来。不过在Unix操作系统中,有时候不用这么麻烦。因为操作系统提供了一个script命令,帮助系统工程师来记录某个会话的过程。这是一个比较冷僻的命令,也不在POSIX的规范中。为此有些Unix操作系统版本就可能不带有这个功能。不少系统工程师可能平时很少接触这个命令。不过笔者是比较喜欢这命令的。简单的说,系统工程师利用这个命令就可以将一个会话的整个过程或则中间的某些操作记录到一个文件中。利用这个命令基本上可以在文件中记录大部分的键盘操作、命令的输出结果以及错误信息。也就是说,在屏幕上输出的信息基本上都可以保存在这个文件中。然后系统管理员可以在事后查看这个文件以获得必要的信息。那么这个命令该如何使用呢?如下图,其实很简单.
如上图所示,就是script命令使用的基本过程。首先当系统工程师想要记录某个会话的时候,则只需要在会话开始时输入script命令。输入这个命令后,系统就会将当前用户的所有键盘操作、屏幕输出以及错误信息等等保存到一个特定的文件中。如上面执行了ps命令与who命令后,希望就会将这两个命令(用户的键盘操作)、屏幕输出(命令的执行结果)等等保存到文件中。当工程师需要退出记录过程时,则只需要输入exit命令,系统就会就是script done的提示信息。表示系统已经结束了记录工作.
当系统工程师需要查看这个文件的信息时,可以使用cat或者vi命令来查看这个文件中的内容。不过所使用的shell版本不同,他们先是的结果可能有所差异。如在某些版本中,使用cat命令来查看这个文件,可能只显示这个命令在什么时候完成,而不会显示用户的键盘操作与屏幕的输出信息。为此笔者建立采用vi命令。利用vi命令来查看这个文件,就不会有版本之间的差异问题。如使用vi typescript命令,就可以查看这个文件中的具体信息。通常情况下,整个文件中包含以下几部分内容.
第一行是注释信息。如“Script started on 2009年06月15日 星期一 18时24分21秒”。这个提示信息显示这个命令开始执行的时间。然后在最后一行中,也有类似的提示信息。不过最后一行的提示信息显示的是这个命令完成的时间,显示了命令执行完成的日期、具体时间等西虚拟。然后中间的部分就是命令与输出结果的信息。如果在命令的的执行过程中,有错误信息的话,也会一并在这里记录.
2、scirpt命令使用的注意事项.
从以上的截图中可以看出这个命令使用起来其实并不是很复杂。不过在一些细节方面还系统管理员仍然需要注意。具体的来说,有如下几个方面要注意.
第一需要注意重复记录的问题。系统工程师可能只需要记录部分的操作,为此在世纪工作中可能会频繁的打开和关闭这个命令。但是需要注意的是,默认情况下采用script命令后会覆盖原有的文件。如现在系统工程师首先使用script命令记录了ps操作,此时系统会产生一个叫做typescript的文件,记录这个命令操作的相关信息,然后中止了这个命令。一会儿一后又重新使用这个命令,来记录who操作的过程。此时系统又会产生一个一模一样的typescript文件。此时系统会将原先的记录文件覆盖掉。显然这可能跟系统工程师的初衷相违背的。系统工程师希望后续的操作能够保存在原先的记录文件中,而不是覆盖掉。如果要实现这个需求的话,那么系统工程师在执行这个命令时,必须使用一个可选项参数。即按照script –a的形式来启动这个命令。此时系统就不会覆盖原有的记录内容,而是将后续的操作内容追加到原有的文件中.
第二是不会记录所有的操作。如系统工程师先启动了script命令。然后再利用passwd命令来修改当前帐户或者其他帐户(以特权用户登录)的密码时,这个密码信息是否也会记录下来呢?如果在记录文件中也记录了密码的操作信息,那么显然会带来一定的安全隐患。不过这个担忧是多余的。各位读者可以回去测试一下,一般情况下这个密码信息是不会记录在这个文件中。其实,大家可以想象一下,再输入passwd命令后,输入新密码时,在屏幕上也不会显示用户的输入内容,即新密码。为此这个在屏幕上没有输出的内容,也不会保存到这个记录文件中。所以笔者说用户的这个担忧是不必要的.
第三是某些特定的命令不会记录。笔者上面谈到,有些键盘操作记录是不会被保存的。即只要在屏幕上没有输出的信息一般情况下就不会给保存到记录文件中。不过这是一个充分不必要条件。即反过来就不成立。并不是屏幕上所有显示的内容都会一五一十的记录到这个文件中。像一些全屏模式的操作命令,如vi命令等等,就不会记录到这个文件中。为此系统工程师在使用这个工具时,需要预见到这种情况。在操作时,如果需要记录相关的会话过程,那么就需要尽量避免使用一些全屏的命令。如在设置环境变量时,尽量不要直接利用vi修改相关的配置文件。而是使用set等非全屏命令来对环境变量进行操作。如此操作系统才能够记录完成的操作过程.
第四系统工程师需要了解一些特殊键在文件中是如何表示的。上面笔者所过,记录文件基本上会记录所有的键盘敲击动作。如现在用户输入了ls -1命令先查看当前目录下的所有文件的详细信息。后来用户反悔了,就利用退格键将后面的-l参数去掉了。此时这个退格键的操作也会保存到记录文件中。但是这些特定的功能键在文件中是采用一些特殊的符号来表示的。如退格键在文件中采用的是“[K”字符符号。所以向这个光标移动键或者del删除键等等都有不同的代表方式。只有熟悉了这些代码的含义之后,才可以真正的读懂这个文件。不过其代表的形式虽然不同,但是还是有点规律可循。即一般特殊的功能键都是以[开头的。如果系统工程师看到有这个字符的话,那么就需要考虑这是否代表着某个特殊的功能键.
第五是可以根据自己的需要来确定记录的文件名与保存的路径。如果系统工程师直接使用script命令的话,那么系统会自动为这个文件命名。并且这个文件默认是保存在命令执行所在的目录,即当前目录中。系统工程师在执行命令时,也可以自定义记录文件的名字与保存路径。如可以使用这个命令script log,让系统将相关的记录保存在当前文件夹下的log文件中。如果这个文件不存在的话,系统会自动创建这个文件。若存在的话,除非在命令中使用了-a参数,否则的话,会覆盖原有的文件。在覆盖之前,不会提醒系统工程师。所以这一点系统工程师要引起重视,防止文件被意外删除.
第六是需要注意如果输出结果中有图片信息的话,在这个文件中无法正常读取。如在会话记录的过程中,使用了netconfig命令启动了一个图形窗口。这个图形窗口的信息不会在记录文件中正确反映。系统工程师查看记录文件时,看到的可能只是一连串的[k符号而已。最后需要说明的是,script命令只是对当前的会话有效。即即使在root帐户下启动了script命令,则系统记录的仍然是当前会话的操作。对于其他用户的会话不会有丝毫影响,也不会记录其他用户的操作.
最后此篇关于Linux 记录会话过程的命令的文章就讲到这里了,如果你想了解更多关于Linux 记录会话过程的命令的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我有一个网站。 必须登录才能看到里面的内容。 但是,我使用此代码登录。 doc = Jsoup.connect("http://46.137.207.181/Account/Login.aspx")
我正在尝试为我的域创建一个 SPF 记录并使我的邮件服务器能够对其进行评估。我在邮件服务器上使用 Postfix 并使用 policyd-spf (Python) 来评估记录。目前,我通过我的私有(p
我需要为负载平衡的 AWS 站点 mywebsite.com 添加 CName 记录。记录应该是: @ CNAME mywebsite.us-east-1.elb.amazon
我目前正在开发一个相当大的多层应用程序,该应用程序将部署在海外。虽然我希望它在解聚后不会折叠或爆炸,但我不能 100% 确定这一点。因此,如果我知道我可以请求日志文件,以准确找出问题所在以及原因,那就
我使用以下命令从我的网络摄像头录制音频和视频 gst-launch-0.10 v4l2src ! video/x-raw-yuv,width=640,height=480,framerate=30/1
我刚刚开始使用 ffmpeg 将视频分割成图像。我想知道是否可以将控制台输出信息保存到日志文件中。我试过“-v 10”参数,也试过“-loglevel”参数。我在另一个 SO 帖子上看到使用 ffmp
我想针对两个日期查询我的表并检索其中的记录。 我这样声明我的变量; DECLARE @StartDate datetime; DECLARE @EndDate datetime; 并像这样设置我的变量
在 javascript 中,我可以使用简单的 for 循环访问对象的每个属性,如下所示 var myObj = {x:1, y:2}; var i, sum=0; for(i in myObj) s
最近加入了一个需要处理大量代码的项目,我想开始记录和可视化调用图的一些流程,让我更好地理解一切是如何组合在一起的。这是我希望在我的理想工具中看到的: 每个节点都是一个函数/方法 如果一个函数可以调用另
如何使用反射在F#中创建记录类型?谢谢 最佳答案 您可以使用 FSharpValue.MakeRecord [MSDN]创建一个记录实例,但是我认为F#中没有任何定义记录类型的东西。但是,记录会编译为
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 3年前关闭。 Improve thi
我是 Sequelize 的新手并且遇到了一些语法问题。我制作了以下模型: // User sequelize.define('user', { name: { type: DataTyp
${student.name} Notify 这是我的output.jsp。请注意,我已经放置了一个链接“Notify”以将其转发到 display.jsp 上。但我不确定如何将 Stud
例如,这是我要做的查询: server:"xxx.xxx.com" AND request_url:"/xxx/xxx/xxx" AND http_X_Forwarded_Proto:(https O
我一直在开发大量 Java、PHP 和 Python。所有这些都提供了很棒的日志记录包(分别是 Log4J、Log 或logging)。这在调试应用程序时有很大帮助。特别是当应用程序 headless
在我的Grails应用程序中,我异步运行一些批处理过程,并希望该过程记录各种状态消息,以便管理员以后可以检查它们。 我考虑过将log4j JDBC附加程序用作最简单的解决方案,但是据我所知,它不使用D
我想将进入 MQ 队列的消息记录到数据库/文件或其他日志队列,并且我无法修改现有代码。是否有任何方法可以实现某种类似于 HTTP 嗅探器的消息记录实用程序?或者也许 MQ 有一些内置的功能来记录消息?
如果我有一条包含通用字段的记录,在更改通用字段时是否有任何方法可以模仿方便的 with 语法? 即如果我有 type User = // 'photo can be Bitmap or Url {
假设我有一个名为 Car 的自定义对象。其中的所有字段都是私有(private)的。 public class Car { private String mName; private
当记录具有特定字段时,我需要返回 true 的函数,反之亦然。示例: -record(robot, {name, type=industrial, ho
我是一名优秀的程序员,十分优秀!