无法将 csh 中 openmpi 的标准错误重定向到文件

无法将 csh 中 openmpi 的标准错误重定向到文件

我已阅读这个问题和答案 -将 stderr 重定向到 stdout但似乎没有任何方法可以捕获 Ubuntu 16.04 LTS 上名为 OpenMPI 的软件的错误。

我在 shell 脚本中输入 OpenMPI 命令

mpirun -np 4 command 

然后在命令提示符下输入

job_script >& logs 

这会捕获应用程序软件错误和输出,但不会捕获脚本引发的 OpenMPI 错误。现在如何捕获 OpenMPI 错误,因为这些错误将转为标准错误?

答案1

>&运算符将标准错误和标准输出重定向到同一目标。重定向标准错误是 csh 无法做到的最著名的事情之一,所以如果你想这样做,答案是不可能的。 (当然,这是可能的 - 但只能通过另一个程序,例如sh。)但是,您想要重定向 stdout 以及 stderr,并且>&正是这样做的。

如果job_script >& logs发出一些输出,则应用程序必须直接写入终端。您无法通过重定向来捕获它。您可以使用该script命令将所有内容(包括终端输出)记录到文件中。

script -c 'job_script' logs >/dev/null

话虽如此,现在已经是 2017 年了。自 (t)csh 在交互使用方面比 bash 具有优势以来,已经过去了大约 15 年,比 zsh 早了大约 25 年,而 csh 从来都不擅长编写脚本。现在已经到了让它退休的时候了。

答案2

从命令行cshell执行此操作以分离 stdout/stderr 流:

( job_script > stdout.log ) >& stderr.log

相关内容