2

我试图将标准错误重定向到具有受限权限的文件。这就是我所做的:

exec 2> >(umask 077; exec > stderr.log)

这个想法是将标准错误重定向到一个进程,更改 umask 并再次重定向到日志文件。

但它不起作用。按下 后命令停止并以 141 终止return

Bash手册没有在手册中定义“进程列表

任何人都可以解释失败吗?

4

1 回答 1

3

您应该使用catinside sub-process 来写入进入该进程的 stdin 的数据,该进程(...)实际上是父进程的 stderr:

exec 2> >(umask 077; cat > stderr.log)

进程替换将一个进程(或多个进程)的输出馈送到另一个进程的标准输入中。只是通过这样做exec > stderr.log,您只是将子流程的标准输出重定向到一个文件,但是您实际上并没有向内部的标准输出写入任何内容>(...)

于 2016-08-24T10:51:36.467 回答