stderr 用法 linux,linux – 如何在使用“tee”时使用管道将stderr写入文件?
我假设你仍然看到STDERR和STDOUT在终端上。你可以去Josh Kelley的答案,但我发现在背景中保持尾巴,输出你的日志文件非常hackish和cludgy。注意你需要保持一个exra FD,然后清除它,杀死它,技术上应该在一个陷阱“…”退出。
有一个更好的方法来做到这一点,你已经发现它:三通。
只有,而不是只使用它为您的stdout,有一个发球台的stdout和一个stderr。你将如何做到这一点?进程替换和文件重定向:
command > >(tee stdout.log) 2> >(tee stderr.log >&2)
让我们分开来解释:
> >(..)
>(…)(过程替换)创建一个FIFO并让Tee监听。然后,它使用> (文件重定向)将命令的STDOUT重定向到您的第一个三通正在侦听的FIFO。
第二个同样的事情:
2> >(tee stderr.log >&2)
我们再次使用进程替换来创建一个从STDIN读取并将其转储到stderr.log中的tee进程。 tee在STDOUT上输出其输入,但由于其输入是我们的STDERR,因此我们要将tee的STDOUT重新定向到我们的STDERR。然后我们使用文件重定向将命令的STDERR重定向到FIFO的输入(tee的STDIN)。
过程替代是那些真正可爱的事情之一,作为选择bash作为你的shell,而不是sh(POSIX或Bourne)的奖励。
在sh,你必须手动做事情:
out="${TMPDIR:-/tmp}/out.$$" err="${TMPDIR:-/tmp}/err.$$"
mkfifo "$out" "$err"
trap 'rm "$out" "$err"' EXIT
tee stdout.log < "$out" &
tee stderr.log < "$err" >&2 &
command >"$out" 2>"$err"
stderr 用法 linux,linux – 如何在使用“tee”时使用管道将stderr写入文件?相关推荐
- Linux为什么无法进入文件,Linux系统运维之CentOS下提示“无法打开并写入文件”问题解决...
当前是root用户,去编辑/etc/ssh/sshd_config 却提示没有权限修改.报错如"/etc/ssh/sshd_config" E212: 无法打开并写入文件. 问题思 ...
- linux tee 命令 输出的同时写入文件
有时候,你会想手动跟踪命令的输出内容,同时又想将输出的内容写入文件,确保之后可以用来参考.如果你想寻找这相关的工具,那么恭喜你,Linux 已经有了一个叫做 tee 的命令可以帮助你. tee 命令基 ...
- linux 输出重定向_Linux--文件描述符和stdin,stdout,stderr
基本概念 1. 文件描述符 总览: 当一个程序成功向操作系统请求访问一个打开的文件, 内核会返回一个指向内核中全局文件表(global file table)中的入口点(entry)的文件描述符. 文 ...
- linux下tail命令的用法,在Linux命令中tail的用法
linux中的tail命令用途是按照要求将指定的文件的最后部分输出到标准设备,一般是终端,通俗讲来,就是把某个档案文件的最后几行显示到终端上,如果该档案有更新,tail会自动刷新,确保你看到最新的档案 ...
- c语言strTrimed函数用法介绍,linux type命令用法_转
在脚本中type可用于检查命令或函数是否存在,存在返回0,表示成功:不存在返回正值,表示不成功. $ type foo >/dev/null 2>&1 || { echo > ...
- linux中chmod命令的用法,【linux】chmod命令详细用法
功能说明: 变更文件或目录的权限 u:User,即文件或目录的拥有者. g:Group,即文件或目录的所属群组. o:Other,除了文件或目录拥有者或所属群组之外,其他用户皆属于这个范围. a:Al ...
- linux内核剖析(八)进程间通信之-管道
管道 管道是一种两个进程间进行单向通信的机制. 因为管道传递数据的单向性,管道又称为半双工管道. 管道的这一特点决定了器使用的局限性.管道是Linux支持的最初Unix IPC形式之一,具有以下特点: ...
- 文件名重定向到txt中Linux,Linux上glob用于实现文件名的通配、IO重定向及管道
Linux中所谓的通配是指,显示以指定条件为条件的文件:即通配的含义是指搜寻以已知条件为前提的目标文件. 常用文件通配符有: 文件通配符 含义 例子 * 任意长度的任意字符 如a*,搜寻所有以a为首的 ...
- 九十分钟极速入门Linux——Linux Guide for Developments 学习笔记
转载自: 九十分钟极速入门Linux--Linux Guide for Developments 学习笔记 http://mp.weixin.qq.com/s?__biz=MzAwNTMxMzg1MA ...
最新文章
- 查找nginx安装的路径以及相关安装操作命令
- docker安装mysql指定_Docker安装MySql,并且使用外部客户端链接
- XAMPP环境下apache无法启动(端口未被占用)的解决方法
- OpenCV 玩九宫格数独(二):knn 数字识别
- POJ - 3252 Round Numbers(数位dp)
- mysql set语句_MySQL Prepared语句简介
- JavaScript大杂烩4 - 理解JavaScript对象的继承机制
- 数据分箱1——人工手动分箱
- EditPlus v2.20 Build 205
- 致敬Github那些卓越贡献的大佬和他们的公众号
- uniapp使用colorUI 组件
- 信息学奥赛一本通1032
- 机器视觉最常见的五大典型应用
- 税务会计实务【15】
- 虚拟内存之TLB加速地址翻译
- tiny6410烧录
- html css 实现文字竖排模拟古籍排版
- 学习jQuery的感受
- 台式计算机显示器的分辨率,直观:计算机的一般屏幕分辨率是什么?
- android 纳秒级计时器,RDTSC指令实现纳秒级计时器
热门文章
- 解决常见接口跨域问题
- 是==和!=相互依赖?
- 将对象序列化为字符串
- Homebrew:无法符号链接,/ usr / local / bin不可写[关闭]
- 如何将零填充到字符串?
- win11系统卡死怎么办 Windows11系统卡死的解决方法
- 在Makefile中进行宏定义-D
- 汕头大学计算机英语复试,2020年汕头大学计算机应用技术考研经验分享
- linux修改ip配置文件路径,Centos7系统如何修改IP地址
- java tostring是什么意思_Java程序员不会用Lombok就落伍了