【发布时间】:2020-01-15 09:44:27
【问题描述】:
问题是这样的。
我有一个python代码“test.py”,它调用了一个命令行:
os.system('nohup some_command > b.txt &')
print(some_results)
而且效果很好,它将“some_command”的输出信息重定向到“b.txt”,并且只将“some_results”打印到终端。
我想在后台运行代码(退出终端时让它继续运行),所以我使用这个命令:
nohup python test.py > a.txt &
现在所有内容,包括“some_results”和“some_command”的输出,都被重定向到“a.txt”,导致程序无法正常运行。
有没有办法只将“some_results”而不是所有内容重定向到“a.txt”?我该怎么办?
PS:我不知道我应该搜索什么关键字,通过搜索“nohup in nohup”我没有找到相关的解决方案。
============================== 一些不成功的尝试=============== ==========
看完一个推荐问题:Redirect stdout to a file in Python?
我有个主意:
import sys
sys.stdout=open('c.txt','w')
os.system('nohup some_command > b.txt &')
print(some_results)
但是问题还是没有解决。
nohup python test.py > a.txt & 将 python 输出重定向到“c.txt”(如预期的那样),但其他所有内容都重定向到“a.txt”而不是“b.txt”,并导致失败。
python test.py > a.txt & 临时工作:它将 python 输出重定向到“c.txt”,命令输出到“b.txt”,并将“a.txt”留空,正如预期的那样(有点)。
但是,每次调用“os.system”命令时,终端都会弹出“nohup: redirecting stderr to stdout”消息。重启终端后,不再弹出消息,程序仍在运行,但重定向变为nohup python test.py > a.txt &。
============== 一些附加信息 =====================
os.system(blabla) 被多次执行。
“some_command”其实是“pocketsphinx”,输出了很多日志,包括音素的时间对齐,最后是一行描述没有时间对齐的音素序列。我需要的是“时间对齐”部分。
在正常情况下,最后一行总是跟在信息部分之后,无论它们在哪里打印。
在我的问题中,最后一行始终正确地位于“b.txt”中。信息(包括我希望它们在“b.txt”中的时间对齐)被重定向到其他地方。
【问题讨论】:
-
这能回答你的问题吗? Nohup is not writing log to output file