这篇文章将为大家详细讲解有关Linux中script命令有什么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

Linux常用命令script 用于在终端会话中,记录用户的所有操作和命令的输出信息。

script

记录终端会话的所有操作

补充说明

简而言之,记录终端会话发生的一切信息,如同一台终端录像机。例如,用户在输入某条命令时,字符的键入和删除也都会被记录。用户在终端的所有操作、终端的回显等信息会被以 raw 格式存储在日志文件,称为终端数据文件。命令的时间信息会被单独以另一种结构储存为日志文件,称为时间日志文件。使用命令exit或者快捷键Ctrl + D停止记录。

语法

script(选项)(参数)选项

-a,--append#对终端会话的操作信息,以追加方式写入文件(保留原文件内容)-c,--commandcommand#只运行command命令而不打开交互终端。相当于开启script,执行command,再退出script#command可以是任意能够在终端会话执行的命令-e,--return#返回子进程的退出状态码-f,--flush#每次终端的内容发生变动,立马写入日志文件--force#允许默认输出终端数据文件为符号链接-o,--output-limitsize#限制终端数据文件和时间日志文件的大小,当文件大小达到此限制就会退出子进程#size的单位可以设置为:KiB(=1024)、KB(=1000)、MiB(1024*1024)、MB(=1000*1000)#同理还支持GiBTiBPiBEiBZiBYiBGBTBPBEBZBYB-q,--quiet#安静模式。启动和退出script命令不显示任何提示-t[file],--timing[=file]#输出时间日志信息到标准错误(stderr)或者文件-V,--version#显示版本信息并退出-h,--help#显示帮助文本并退出参数

终端数据文件:设置存储终端数据信息的文件名称

实例

script#开启记录,默认会在当前目录创建名称为typescript的文件来保存终端数据文件scriptcommand.log#开启记录,在当前目录创建名称为command.log的文件来保存终端数据文件script-t2>time.filecommand.log#开启记录,在当前目录创建名称为command.log的文件来保存终端数据文件#在当前目录创建名称为time.file的文件来保存时间日志文件

以追加模式记录终端信息

zfb@localhost:~$script-t2>time.file-a-fcommand.logScriptstarted,fileiscommand.logzfb@localhost:~$echo"hello,world"hello,worldzfb@localhost:~$echo$(date"+%Y-%m-%d%H:%M:%S")2020-12-2320:48:46zfb@localhost:~$echo"Bye"Byezfb@localhost:~$ls-altotal20drwxr-xr-x2zfbzfb4096Dec2320:48.drwxr-xr-x37zfbzfb4096Dec2320:49..-rw-r--r--1zfbzfb0Dec2319:03a.txt-rw-r--r--1zfbzfb12Dec2319:04b.txt-rw-r--r--1zfbzfb2744Dec2320:49command.log-rw-r--r--1zfbzfb790Dec2320:49time.filezfb@localhost:~$exitScriptdone,fileiscommand.logzfb@localhost:~$

然后,用户可以查看终端数据文件,使用方法如下

zfb@localhost:~$catcommand.logScriptstartedon2020-12-2320:48:25+08:00[TERM="xterm-256color"TTY="/dev/pts/0"COLUMNS="75"LINES="30"]zfb@localhost:~$echo"hello,world"hello,worldzfb@localhost:~$echo$(date"+%Y-%m-%d%H:%M:%S")2020-12-2320:48:46zfb@localhost:~$echo"Bye"Byezfb@localhost:~$ls-altotal20drwxr-xr-x2zfbzfb4096Dec2320:48.drwxr-xr-x37zfbzfb4096Dec2320:49..-rw-r--r--1zfbzfb0Dec2319:03a.txt-rw-r--r--1zfbzfb12Dec2319:04b.txt-rw-r--r--1zfbzfb2744Dec2320:49command.log-rw-r--r--1zfbzfb790Dec2320:49time.filezfb@localhost:~$exitScriptdoneon2020-12-2320:49:04+08:00[COMMAND_EXIT_CODE="0"]zfb@localhost:~$

其中,只有命令cat command.log是用户输入,其他均为自动呈现。通过查看上面输出的时间2020-12-23 20:48:46,可以证明,这是重现的记录,而非重新执行一遍命令。也就是说,可以把time.file和command.log文件移动到任意一台机器上,都可以重现命令输入与终端回显。

记录服务器用户会话操作

以root身份编辑文件/etc/profile,在文件末尾追加以下内容

if[$UID-ge0]thenexec/usr/bin/script-t2>/var/log/script-records/$USER-$UID-`date+%Y%m%d`.time-a-f-q/var/log/script-records/$USER-$UID-`date+%Y%m%d`.logfi

然后再以root身份创建文件夹用于存储服务器上的各个用户在终端的所有操作信息

sudomkdir-p/var/log/script-records/sudochmod733/var/log/script-records/

最后,执行命令source /etc/profile即可。任意用户(UID ≥ 0)在终端执行的所有操作都会被安静地记录下来,以天为单位存储。

关于“Linux中script命令有什么用”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。