如何使用tee和脚本命令捕获输出和文件错误

当您编写了一个脚本来处理Linux服务器上的关键任务时,会发生什么,您需要该脚本的输出,这样您就可以记录发生了什么,或者排除在运行过程中可能没有发生的事情?如果脚本使用特定的服务,您可以始终查看这些特定的日志文件,但这有点麻烦。如果脚本失败,这些服务日志可能没有任何帮助。

您最好的选择是使用总是方便的T恤或脚本命令。该tee命令从标准输出读取并写入标准输出或文件,而脚本命令则制作终端会话的类型脚本,并可以输出到文件。对于那些做了大量的bash脚本的人来说,这些命令应该被认为是必备的工具。当您的脚本输出大量信息时,尤其如此。

我想向您介绍tee和脚本命令,这样您就可以更有效地排除故障并记录bash脚本。

请参阅:微软Word和Excel的免费替代品(Tech Republic下载)

唯一需要使用tee或脚本的是Linux服务器(或桌面)。默认情况下,Tee和脚本都应该安装,因此不需要安装单个包。

为了简单起见,让我们写一个永远令人愉快的“HelloWorld”bash脚本。该脚本只包括以下内容:

用命令命名该文件测试并赋予其可执行权限:

如果您使用命令执行该脚本。/测试,您应该看到类似于图A中显示的输出。

图A

一个工作的HelloWorld脚本。

你可能会问自己一个问题,“为什么我不直接把脚本的输出发送到一个文件中?”你可以通过命令这样做:

您将看到没有输出返回到终端,因为所有的东西都被转储到文件test.log中。若要实时查看输出,并拥有输出的日志文件,请使用Tee命令如下:

您不仅会看到HelloWorld打印到标准输出(终端-图B),还会有包含相同输出的test.log文件。

图B

发球命令在行动中。

下一个工具叫做脚本。使用脚本,您将得到一个交互式会话,所有这些会话都被打印成标准输出并写入文件。若要在HelloWorld示例中使用脚本,则命令为:

-c选项告诉脚本我们正在运行一个命令。脚本命令的输出如图C所示。

图C

剧本的输出。

带tee和脚本命令的文件的输出之间的区别在于脚本输出会给你更多的信息,比如退出代码(图D)。

图D

退出代码包含在脚本输出中。

当然,当你有一个更复杂的bash脚本时,你会看到更多的指令输出。例如,假设您编写了一个bash脚本,它需要输入一个文件名,并且所说的文件将被删除。bash的剧本可能是这样的:

使用脚本命令运行该文件时:

您将被要求删除文件名(图E)。一旦文件被删除,您就可以查看test.log文件以查看会话的全部内容。

图E

运行中稍微复杂一点的bash文件。

当您有一个非常复杂的bash脚本时,您会看到更多(和有用的)输出写入日志文件。

在这里,有两种方法可以将bash脚本的输出捕获到标准输出和文件。享受这个新级别的bash脚本故障排除和日志记录。

您不想错过我们关于Linux操作系统和开源应用程序的提示、教程和评论。星期二交货

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。