标签 script 下的文章

几天前,我们发布了一个解释如何保存终端中的命令并按需使用的指南。对于那些不想记忆冗长的 Linux 命令的人来说,这非常有用。今天,在本指南中,我们将看到如何使用 script 命令记录你在终端中执行的所有操作。你可能已经在终端中运行了一个命令,或创建了一个目录,或者安装了一个程序。script 命令会保存你在终端中执行的任何操作。如果你想知道你几小时或几天前做了什么,那么你可以查看它们。我知道我知道,我们可以使用上/下箭头或 history 命令查看以前运行的命令。但是,你无法查看这些命令的输出。而 script 命令记录并显示完整的终端会话活动。

script 命令会在终端中创建你所做的所有事件的记录。无论你是安装程序,创建目录/文件还是删除文件夹,一切都会被记录下来,包括命令和相应的输出。这个命令对那些想要一份交互式会话拷贝作为作业证明的人有用。无论是学生还是导师,你都可以将所有在终端中执行的操作和所有输出复制一份。

在 Linux 中使用 script 命令记录终端中的所有内容

script 命令预先安装在大多数现代 Linux 操作系统上。所以,我们不用担心安装。

让我们继续看看如何实时使用它。

运行以下命令启动终端会话记录。

$ script -a my_terminal_activities

其中,-a 标志用于将输出追加到文件(记录)中,并保留以前的内容。上述命令会记录你在终端中执行的所有操作,并将输出追加到名为 my_terminal_activities 的文件中,并将其保存在当前工作目录中。

示例输出:

Script started, file is my_terminal_activities

现在,在终端中运行一些随机的 Linux 命令。

$ mkdir ostechnix
$ cd ostechnix/
$ touch hello_world.txt
$ cd ..
$ uname -r

运行所有命令后,使用以下命令结束 script 命令的会话:

$ exit

示例输出:

exit
Script done, file is my_terminal_activities

如你所见,终端活动已存储在名为 my_terminal_activities 的文件中,并将其保存在当前工作目录中。

要查看你的终端活动,只需在任何编辑器中打开此文件,或者使用 cat 命令直接显示它。

$ cat my_terminal_activities

示例输出:

Script started on Thu 09 Mar 2017 03:33:44 PM IST
[sk@sk]: ~>$ mkdir ostechnix
[sk@sk]: ~>$ cd ostechnix/
[sk@sk]: ~/ostechnix>$ touch hello_world.txt
[sk@sk]: ~/ostechnix>$ cd ..
[sk@sk]: ~>$ uname -r
4.9.11-1-ARCH
[sk@sk]: ~>$ exit
exit

Script done on Thu 09 Mar 2017 03:37:49 PM IST

正如你在上面的输出中看到的,script 命令记录了我所有的终端活动,包括 script 命令的开始和结束时间。真棒,不是吗?使用 script 命令的原因不仅仅是记录命令,还有命令的输出。简单地说,脚本命令将记录你在终端上执行的所有操作。

结论

就像我说的那样,脚本命令对于想要保留其终端活动记录的学生,教师和 Linux 用户非常有用。尽管有很多 CLI 和 GUI 可用来执行此操作,但 script 命令是记录终端会话活动的最简单快捷的方式。

就是这些。希望这有帮助。如果你发现本指南有用,请在你的社交,专业网络上分享,并支持我们。

干杯!


via: https://www.ostechnix.com/record-everything-terminal/

作者:SK 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

当你在终端或者控制台工作时,你可能想要记录在终端中所做的一切。这些记录可以用来当作史料,保存终端所发生的一切。比如说,你和一些Linux管理员们同时管理着相同的机器,或者你让某人远程登陆到了你的服务器上,你可能记录想要终端里发生的一切。要实现这个目标,你可以使用script命令。

script是什么

scirpt就是一个命令,可以制作一份记录输出到终端的记录。对于那些想要真实记录终端会话的人来说,这很有用。该记录可以保存并在以后再打印出来。

怎么用

默认情况下,我们可以通过在终端中输入script来启动scirpt命令。

pungki@dev-machine:~$ script
Script started, file is typescript
pungki@dev-machine:~$

你也可以指定目标文件名来记录打印结果。

pungki@dev-machine:~$ script myfile

Define script file

当你再次见到命令提示符,这意味着终端将记录打印到终端的任何东西。

你会看到当前目录,有个名为myscript的文件。(LCTT译注,此处原文有误。这里指定了记录文件名为myfile,而不是默认的 typescript。)

为什么我们要用script命令

因为在之前已经提到过,script命令的主要功能是记录所有的东西。下面给出了两个使用该命令的场景。

和同事共事时

当和同事一起工作时,我们可以通过script来记录你的活动。

比如,我们会使用名为collaborate的打印文件,来完成打印:

$ script collaborate

Create collaborate file

然后,在完成一些任务后,假如你需要把你干的活发给另外一个工程师,那就把那文件发给他。所以当另外一个工程师需要复查所做的事情,他只要用文本编辑器打开这个文件就行了。

如果他想要更新该文件(以增加他的工作部分),可以使用-a选项。

$ script -a collaborate

Append the file

记录某人在终端中的所作所为

你可能让你的工程师或者某个人远程访问你的系统,要确保你的工程师正在干正确的事,你可以记录下他在你系统上的所作所为。要让script命令在登录时自动运行,我们可以把它添加进shell环境配置文件中。如果你正在使用bash shell,把这一行加进你的bash环境配置文件中。

$ vi ~/.profile

# run the script command to record everything
# use -q for quite and -a option to append the script
#
/usr/bin/script -qa /usr/local/script/log_record_script

Add script to bash profile

然后保存。下次他登录进你的系统时,script命令就会自动运行,并把日志记录进/usr/local/script/logrecordscript

Script without notification

-q选项可以让scirpt命令以静默模式运行,登录进来的用户不会知道script命令已经运行了。而-a选项将会让记录附加到文件中,而不会擦除先前的记录。

如果不使用-q选项,那么当用户登录进来时,他会收到像下图中这样的通知。

Script with notification

退出记录

要退出记录活动,我们可以在终端中按下Ctrl+D,或者输入exit。在退出script前,你会发现记录文件的大小为0 Kb,而在退出之后,文件大小会发生改变。

结尾

Script命令在你需要记录或者存档终端活动时可能很有用,记录文件会存储为文本文件,所以可以很方便地用文本编辑器打开。跟平常一样,我们都可以通过输入man script或者scirpt -h来显示帮助页并查看更多详细用法。


via: http://linoxide.com/linux-command/script-command-recorder/

译者:GOLinux 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

我们时不时给你带来关于Linux的提示与技巧。和这个系列保持一致,这里有8个我们从读者收到最有趣的提示和技巧。我们希望你喜欢它。请继续读下去。。。

以它们的大小列出文件

如果你想要一个基于它们大小排序的文件列表,你可以使用下面的命令。

它会以递减顺序排列文件。

# ls -l | grep ^- | sort -nr -k 5 | more

如果你想要递归地做相同的事,你可以使用下面的第二个命令。

# ls -lR | grep ^- | sort -nr -k 5 | more

—Sumedh Gajbhiye, [email protected]

重置奇怪的终端

如果感觉你的bash终端错误地显示垃圾的提示字符信息,并无论你输入任何命令都显示非ASCII字符-下面的命令可以让事情回到正轨。

在终端盲打输入(译注:因为你其实看不到你输入的这些字符的正确显示,不过尽管输入好了!)下面的命令并按回车:

# reset

如果那个不能修复这个问题,试一下下面的:

# stty sane

—Sudheer Divakaran, [email protected]

记录并回放终端会话

下面是一个简单的贴士来记录并回放终端回放。它通过使用命令script和scriptreplay。

这在使用终端制作教程时非常方便。

要开始记录你的终端会话,使用下面的命令:

$ script -t 2> timing.log -a output.session

接着输入:

$ ls
$touch test
.....

$ exit

这里,script命令取两个文件作为参数timing.log(它记录了每个命令执行的时间信息)和output.session(存储了命令的输出)。

现在,要回访记录的会话,使用下面所示的scriptplay。

$ scriptreplay timing.log output.session

注:timing.log和output.session可以被任何想要在自己的终端上重放会话的人使用。

—Abhishek Singh, [email protected]

使用shell脚本生成随机数

有时当你想要用shell脚本编程时,可能需要生成一个随机数来用于脚本。

这里是获得一个3位随机数的代码。

var=$(dd if=/dev/urandom count=1 2> /dev/null | cksum | cut -f1 -d” “ | cut -c 3-5);

这回存储随机生成的数字在名为var的变量中。

—Arpan Chavda, [email protected]

以root用户运行Linux上的软件

作为一名root用户,为了让某些不能在root身份运行的软件运行(译注:典型的是google chrome),你需要在软件的二进制文件中改变geteuid调用为getppid。

这个技术在操作系统中非常有用,比如backtrack,这里的大多数安装工作都以root用户完成。

比如:为了以root用户运行Google Chrome,使用下面的命令:

# hexedit /opt/google/chome/chrome

接着按下Ctrl+S并在16进制转储文件中搜寻geteuid字符串。用字符串getppid代替。按下Ctrl+X来保存并退出编辑器。

现在浏览器就可以以root用户运行了。

# google-chrome

—Mayank Bhanderi, [email protected]

用gzip压缩优化你的站点

压缩是一种简单、有效的方法来节约带宽和加速你的站点。在压缩的帮助下,多数站点的主页面会从100KB变成10KB。

为了在Apache Web服务器中启用这个特性,你需要在httpd.conf中包含deflate\_module,并且在Apache配置文件中加入下面的行 (/etc/httpd/conf/httpd.conf)来压缩text、html、 javascript、 css 和 xml 文件:

AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript

—Munish Kumar, [email protected]

在登陆时检查服务器负载信息

这里有一个贴士来在你登陆服务器的时候检查服务器平均负载。创建一个sload.sh的文本文件,内容如下:

#!/bin/bash
gh=$(uptime | awk -F, ‘{print $3}’)
echo -e “Server$gh\n”

现在,为了在登陆时检查服务器负载,通过/root/.bashrc调用sload.sh脚本。

记住如下设置脚本权限:

# chmod 755 /root/sload.sh

要调用sload.sh脚本,如下在/root/.bashrc后追加

/root/sload.sh

或者你还可以这样追加sload.sh的内容到.bashrc中。

$echo “/root/sload.sh” >> /root/.bashrc

当你完成上面的步骤后,你可以登出并再次登陆来查看服务器负载。

—Ranjith Kumar T, [email protected]

在特定时间开始你的任务

你可以使用下面的命令来在特定时间调度你的作业:

# at 2015

> >vlc /music/rockstar.mp3

这个命令会在2015小时后使用vlc播放器播放rockstar.mp3。你可以在at命令后跟上-l选项来检查挂起的作业:

# at -l

更多at命令的信息可以在man页找到。

—Manas Pradhan, [email protected]


via: http://www.efytimes.com/e1/fullnews.asp?edid=127250

译者:geekpi 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出