我尝试使用nohup运行以下命令(ref.),它基本上将stdout和stderr分离为两个进程。
{ foo 2>&1 1>&3 3>&- | sed -u 's/^/err: /'; } 3>&1 1>&2 | sed -u 's/^/out: /'foo脚本如下所示。
#!/bin/bash
while true; do
echo a
echo b >&2
sleep 1
done这是测试结果。
$ nohup { foo 2>&1 1>&3 3>&- | sed -u 's/^/err: /'; } 3>&1 1>&2 | sed -u 's/^/out: /' >/dev/null 2>&1 &
-bash: syntax error near unexpected token `}'发布于 2022-10-24 03:21:58
这是不可能的。但是您可以将{}封装在sh -c cmd中。
nohup sh -c 'foo 2>&1 1>&3 3>&- | sed -u "s/^/err: /"'注意,我将sed的单引号更改为双引号。
https://stackoverflow.com/questions/74176366
复制相似问题