在后台运行程序,并将其输出实时重定向到文件

道格拉斯·苏:

我想在一个bash会话中同时运行多个python脚本,并分别实时检查其输出。为了完成此任务,我编写了一个简单的bash脚本,如下所示:

#!/bin/bash
python 1.py > 1.output &
python 2.py > 2.output &
python 3.py > 3.output &

但是,当我使用cat 1.output命令检查执行过程中已打印的内容时,什么也看不到。

经过一会儿的思考,我意识到1.output必须在1.py执行完成时填充换句话说,我在这里使用的方法不是real time时尚。

您可能会建议等待这些python脚本完成。不幸的是,事实是那里所有的python脚本实际上都是长期运行的程序,它们可能会在几天或几个月后完成,这就是为什么我要实时检查它们的输出。

另外,您可能建议我修改python脚本以将消息直接打印到文件而不是stdout抱歉,这里的脚本太复杂而无法修改,其中包含很多print功能。

我现在能做什么?

罗伯ᵩ:

-u开关和等效PYTHONUNBUFFERED环境变量的力量标准输出是缓冲。试试这个:

#!/bin/bash
python -u 1.py > 1.output &
python -u 2.py > 2.output &
python -u 3.py > 3.output &

要么

#!/bin/bash
export PYTHONUNBUFFERED=yes
python 1.py > 1.output &
python 2.py > 2.output &
python 3.py > 3.output &

请注意-u有副作用:请阅读文档以了解更多信息。

参考:

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我可以在后台恢复作业并将其标准输出重定向到文件吗?

除非缓冲模式为NoBuffering,否则在后台运行的Haskell程序不会将输出重定向到文件

Bash不会将输出重定向到文件并在后台运行

如何在屏幕上运行程序,将所有输出重定向到文件并分离

在后台运行程序

如何在后台将应用程序的输出重定向到/ dev / null

使用输入/输出重定向在后台运行进程

在后台将输出重定向到文件时,for循环中出现语法错误

作为sudo在后台运行程序

从终端在后台运行程序

正则表达式的数字匹配并将其重定向到不同的输出文件

在docker中运行简单的ruby文件并将输出重定向到文件

运行并行命令并将输出重定向到具有特定名称的文件

如何并行运行许多PHP脚本并将每个脚本的输出重定向到文件?

如何读取文件并将其重定向到变量?

如何传递参数并将stdin从文件重定向到gdb中运行的程序?

在后台通过SSH重定向正在运行的进程的输出

在执行jar并将其输出重定向到文件时,在控制台上打印System.out.println语句

将程序输出重定向到文件,但不在运行时结束时

使用java在远程linux机器上运行bash文件并将其保留在后台

如何在后台运行程序并获取其PID

如何通过appveyor.yml在后台运行程序?

C ++在后台Windows 10中运行程序

在后台运行功能并继续执行程序

C-如何使用exec在后台运行程序?

Java ProcessBuilder在后台运行程序(.exe)

bash运行程序后在后台做什么?

在Python中在后台运行程序/函数

Flutter:当应用程序在后台运行但无法在iOS中终止时,无法在通知单击时重定向到特定屏幕