错误流重定向的 2>&1 和 >/dev/stdout 之间的区别

问题描述

最近,我在基于 SGE 的集群上运行某个成像处理管道时遇到错误。在本地而不是在 HPC 集群上运行相同的管道很好。 翻阅日志文件,我发现了导致崩溃的错误

/usr/bin/time: /dev/stdout: Not a directory

进一步查看,我发现脚本中为了捕获 time 命令输出,标准错误通过 /dev/stdout 重定向到标准输出的部分。进一步阅读后,我发现有些文件系统没有/dev/stdout

我编辑了脚本以改用 2>&1 并且效果很好。但是,登录HPC计算节点,查看/dev/stdout是否存在,发现它毕竟存在:

# ls /dev/stdout -l
lrwxrwxrwx 1 root root 15 Aug 24  2020 /dev/stdout -> /proc/self/fd/1

unamelsb_releasebash 版本在本地 PC 和计算节点上是相同的。有人可以解释一下使用 2>&1>/dev/stdout 重定向标准错误的区别,以及为什么我的解决方法有效?

谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)