温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Shell执行脚本并输出日志文件怎么实现

发布时间:2022-10-14 09:49:15 来源:亿速云 阅读:309 作者:iii 栏目:开发技术

这篇文章主要介绍“Shell执行脚本并输出日志文件怎么实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Shell执行脚本并输出日志文件怎么实现”文章能帮助大家解决问题。

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

./tmp/test.sh > /tmp/test.log 2>&1

>和<是文件重定向符。那么1和2是什么?

shell中每个进程都和三个系统文件相关联
标准输入stdin
标准输出stdout
标准错误stderr
三个系统文件的文件描述符分别为0,1和2。
所以这里2>&1的意思就是将标准错误也输出到标准输出当中。

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

$ cat test.sh
t
date

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

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

./test.sh > test1.log
/test.sh: line 1: t: command not found

$ cat test1.log
Tue Oct 9 20:51:50 CST 2007

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

$ ./test.sh > test2.log 2>&1

$ cat test2.log
./test.sh: line 1: t: command not found
Tue Oct 9 20:53:44 CST 2007

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

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

标准输处和标准错误重定向到不同log文件中
如果只想重定向标准错误到文件中,则可以使用2> file。

sh mr_add_test.sh 1>log.log 2>log_err.log

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

./script.sh >>logfile 2>&1

执行脚本script.sh时将错误输出2以及标准输出1都一起以附加写方式导入logfile文件。

即使多次执行脚本,之前的log也仍然存在。

关于“Shell执行脚本并输出日志文件怎么实现”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注亿速云行业资讯频道,小编每天都会为大家更新不同的知识点。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI