如何从命令行中生成子进程?

时间:2011-04-21 23:45:04

标签: bash stderr

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

  1. 我有一个长时间运行的 nohupped 进程,将其stderr重定向到一个文件中。
  2. 但是,我使用子进程为stderr标记时间戳。
  3. 遗憾的是,上面提到的子流程并不是没有用的(我的不好)!
  4. 现在,我如何让这个子进程以某种方式显示nohupped并保持stderr保留并且即使在我注销后仍继续访问该文件。我必须注销服务器。
  5. 有问题的命令行看起来像这样:

    $ 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冲压技术。

    提前感谢任何线索。

2 个答案:

答案 0 :(得分:1)

nohup的人工页面我说nohup [ options ] command [arg ...]

我记得在nohup不处理管道的地方读书,我认为这就是你所拥有的。

尝试将管道流程重新设置为接受参数的脚本,并且它应该可以正常工作。

我希望这会有所帮助。

答案 1 :(得分:-1)

将命令放入shell脚本中,然后不执行脚本。

如果您的脚本包含:

#!/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 yourscript&