【问题标题】:Redirect output file to stdout将输出文件重定向到标准输出
【发布时间】:2023-11-04 00:02:01
【问题描述】:

qsub Oracle Grid Engine 中,这会将输出重定向到文件out.txt

qsub -o $(pwd)/out.txt -sync y awesome_script.sh

如何将输出重定向到stdout

【问题讨论】:

    标签: bash stdout io-redirection qsub sungridengine


    【解决方案1】:

    您可以指定/dev/stdout 作为文件名。

    qsub -o /dev/stdout -sync y awesome_script.sh
    

    更多信息可以在这个答案中找到:https://unix.stackexchange.com/questions/36403


    编辑:

    一个常见的 Unix 习惯用法是文件名- 表示输入的标准输入 输出文件的文件和标准输出。这必须由 但是,该程序;这不是自动的。我找不到任何说法 qsub 是否使用这个成语。试试吧,它可能会奏效。

    如果您想将输出通过管道传送到另一个执行某些操作的命令 有了它,您可以创建一个命名管道 (man mkfifo) 并发送 输出到那个,另一个进程从管道中读取。启动 先读进程。

    关于另一个想法,请参阅this answer, 它解释了如何使用 bash 进程替换。我没用过这个 很多,但我认为应该是这样的:

    qsub -o >(other-command-or-pipeline) -sync y awesome_script.sh
    

    如果您只是想实时查看输出,您可以指定 /dev/tty 作为文件。或者,您可以输出到文件并使用 tail -f.

    希望这些想法之一对你有用。

    【讨论】:

    • 非常感谢您的回复。不过,这种方法似乎不适用于qsub
    • @elm:它是怎么失败的? /dev/stdout 不存在吗? /dev/fd 怎么样?什么操作系统?
    • 程序以某种方式停止,没有 cpu 加载,没有 I/O,没有文件转换。使用 Centos 6. 问题可能在于将远程 /dev/stdout 重定向到主 /dev/stdout 吗?
    • 任何帮助表示赞赏。 +1 用于设计在大多数情况下都有效的建议解决方案。
    • 嗨@elm,看起来有些有用。由于其他人可能会遇到类似问题,请考虑编辑您的问题或发表评论,让他们知道哪种方法最适合您。