Bash在后台运行时不会将Python多处理输出重定向到文件

问题描述 投票:0回答:1

出于运行单元测试的目的,我想使用以下命令使用Python设置本地SMTP服务器:

python -c "import smtpd, asyncore; smtpd.DebuggingServer(('127.0.0.1', 8025), None); asyncore.loop()" > test.log &

但是没有输出写入test.log文件。

但是,运行时输出确实被写入:

python -c "import smtpd, asyncore; smtpd.DebuggingServer(('127.0.0.1', 8025), None); asyncore.loop()" > test.log` or `python -c "print('TEST')" > test.log &

这与异步信号有关吗?还是这里发生了什么?

我在Mac OSX上,Python 3.6

编辑:我试图通过以下命令使用aiosmtpd模块来启动服务器:

python -m aiosmtpd -n > test.log &

这给出了相同的结果。因此,这似乎仅在处理多处理循环时才是一个问题]

编辑2:简化了一些命令,删除了nohup和sudo,仍然存在相同的问题

编辑3:为了澄清,一旦我运行服务器,我就在解释器中运行以下命令以发送消息:

import smtplib; server = smtplib.SMTP(host='127.0.0.1', port=8025); server.ehlo(); server.sendmail("[email protected]", "[email protected]", "MESSAGE") 

编辑4:我什至尝试使用以下文件在文件中运行上述asyncore.loop():>

python test.py > test.log &

仍然没有运气

出于运行单元测试的目的,我想使用以下命令使用Python设置本地SMTP服务器:python -c“ import smtpd,asyncore; smtpd.DebuggingServer(('127.0.0.1',8025),None) ...

python bash macos multiprocessing
1个回答
0
投票

问题不是nohup,是sudosudo必须先询问您的密码,然后取消,因为它在后台时无法询问您,因此,请重新排序命令并激活sudo背景标志...

© www.soinside.com 2019 - 2024. All rights reserved.