如何将shell脚本的全部执行结果记入一个log文件

来源:网络时间:2025-05-19 15:03:32

在数字迷宫的深处,有一段神秘的shell脚本,它不仅仅是代码的组合,而是通往过去与未来之间的密钥。年轻的程序员李晨,偶然间发现了这行能够捕捉时间片段的神秘指令:`./script.sh >> logfile 2>&1`。这不仅记录着每一次命令行的心跳,还隐藏着解开古老技术之谜的线索。

每当夜深人静,李晨的屏幕亮起幽光,他就像一位时间旅者,通过日志文件的每一页,见证了程序世界的喜怒哀乐——标准输出与错误的交织,就像是程序生命的笑与泪。一次不经意的实验,让李晨将标准错误与输出一同导向了一个神秘的日志“时光机”,无意间打开了通往虚拟与现实交错维度的大门。

在这段旅程中,每一次“t”命令的失败,不再是简单的错误,而是引导他理解代码世界深层逻辑的启示;而“date”的正确执行,则像是时间的守护者,标记着探索的节点。随着“test2.log”的内容逐渐丰富,李晨发现,这不仅仅是一段段日志,更是一部关于坚持与探索的传奇

在代码的海洋里,他学会了倾听那些被遗忘的错误信息,它们如同星辰,指引着前行的方向。《编码时光之旅》——一个关于技术、梦想与自我超越的故事,就此拉开序幕,在每一个0与1之间,编织着关于理解与创造的梦幻篇章。

  

让我们介绍一下如何将shell脚本的所有执行结果记录到一个日志文件中。

./script.sh>>logfile2>&1登录后复制

当执行脚本script.sh时,此命令会将错误输出(2)和标准输出(1)都以追加的方式写入到logfile文件中。这样,即使多次执行脚本,之前的日志内容依然会保留。

  

Shell基础执行脚本并输出日志文件

  

shell错误输出重定向到标准输出

./tmp/test.sh>/tmp/test.log2>&1登录后复制

在shell中,每个进程都与三个系统文件相关联:

  标准输入(stdin)   标准输出(stdout)   标准错误(stderr)   

这三个系统文件的文件描述符分别为0、1和2。因此,2>&1的意思是将标准错误也输出到标准输出中。

  

下面通过一个例子来展示2>&1的作用:

$cattest.sh   t   date登录后复制

test.sh中包含两个命令,其中t是一个不存在的命令,执行时会报错,默认情况下,错误会输出到stderr。date则能正确执行,并输出时间信息,默认输出到stdout。

  

标准输出重定向到log文件中,标准错误打印在屏幕上

./test.sh>test1.log   ./test.sh:line1:t:commandnotfound   $cattest1.log   TueOct920:51:50CST2007登录后复制

可以看到,date的执行结果被重定向到log文件中,而t无法执行的错误则只打印在屏幕上。

  

标准输出和标准错误重定向到同一log文件中

$./test.sh>test2.log2>&1   $cattest2.log   ./test.sh:line1:t:commandnotfound   TueOct920:53:44CST2007登录后复制

这次,stderr和stdout的内容都被重定向到log文件中。

  

实际上,>就相当于1>,也就是重定向标准输出,不包括标准错误。通过2>&1,就将标准错误重定向到标准输出(stderr已作为stdout的副本),那么再使用>重定向就会将标准输出和标准错误信息一同重定向了。

  

标准输出和标准错误重定向

shmr_add_test.sh1>log.log2>log_err.log登录后复制

如何将shell脚本的全部执行结果记入一个log文件

  

到此为止,本文关于如何将shell脚本的所有执行结果记录到一个日志文件的内容就介绍到这里了。更多相关shell脚本日志文件的内容,请搜索我们之前的文章或继续浏览下面的相关文章。希望大家以后多多支持我们!

以上就是如何将shell脚本的全部执行结果记入一个log文件的详细内容,更多请关注其它相关文章!

文章内容来源于网络,不代表本站立场,若侵犯到您的权益,可联系我们删除。(本站为非盈利性质网站) 联系邮箱:rjfawu@163.com