Bash 如何处理从命令行生成的子流程?

Bash 如何处理从命令行生成的子流程?,bash,stderr,Bash,Stderr,我要解释我遇到的问题有点复杂: 我有一个长时间运行的nohupped进程,它将其stderr重定向到一个文件中。 但是,我使用一个子流程在stderr上打上时间戳。 不幸的是,上面提到的子流程并不是我的错! 现在,我如何使这个子进程以某种方式不被中断,并保留stderr,即使在我注销后仍继续访问该文件。我必须注销服务器。 所讨论的命令行如下所示: $ nohup myscript.sh -op1 val1 -op2 val2 -op3 val3 >mystderr.txt 2> &g

我要解释我遇到的问题有点复杂:

我有一个长时间运行的nohupped进程,它将其stderr重定向到一个文件中。 但是,我使用一个子流程在stderr上打上时间戳。 不幸的是,上面提到的子流程并不是我的错! 现在,我如何使这个子进程以某种方式不被中断,并保留stderr,即使在我注销后仍继续访问该文件。我必须注销服务器。 所讨论的命令行如下所示:

$ nohup myscript.sh -op1 val1 -op2 val2 -op3 val3 >mystderr.txt 2> >(while read line; do echo "$(date): ${line}"; done > n100l1800g0.5.err ) < /dev/null &
最近在stackoverflow学习了上面的冲压stderr技术

提前感谢您提供的任何线索。

我看到的nohup手册页上写着nohup[options]command[arg…]

我记得在某个地方读到nohup不处理管道,我想这就是你们所拥有的

尝试将管道进程重新设计为接受参数的脚本,它应该可以工作


我希望这会有所帮助。

将您的命令放入shell脚本中,然后nohup脚本

因此,如果您的脚本包含:

#!/bin/bash
myscript.sh -op1 val1 -op2 val2 -op3 val3 >mystderr.txt 2> >(while read line; do echo "$(date): ${line}"; done > n100l1800g0.5.err ) < /dev/null
然后从命令行

$nohup您的脚本&


欢迎来到Stackoverflow并感谢您的回答,但这并不能回答问题。问题是这个命令已经执行了,之后他想将这个进程转换成一个带有nohup的进程。