我有一个.sh脚本,它通过nohup运行许多Python脚本。
当出现“nohup:ignoring input and appending output to‘nohup.out’”消息时,我使用nohup在后台运行它们并避免必要的enter键。

nohup python script2.py 2> /dev/null &
nohup python script2.py 2> /dev/null &
[...]

当我运行这个.sh时,我得到两个Python脚本在后台运行。
这个Python脚本生成一个日志文件,我将其派生为std.stdout
stream_config = logging.StreamHandler(sys.stdout)  <-- here
stream_config.setFormatter(formatter)
importer_logger.addHandler(stream_config)

由于我的实现,我想启动那些nohup但是将stdout发送到PID 1
无需使用nohup即可轻松完成此操作,如下所示:
python tester.py > /proc/1/fd/1

但我如何才能将“不要按回车键继续”和“将文件派生到stdout”结合起来呢?
我不走运地试了一下:
nohup python tester.py > /proc/1/fd/1 2> /dev/null &
nohup python tester.py 2> /proc/1/fd/1 &

提前谢谢。

最佳答案

可以通过使用shell间接启动程序来修复命令,以便可以重定向其输出而不是nohup的输出:

nohup bash -c "exec python tester.py > /proc/1/fd/1" 2> /dev/null &

这不是最好的选择,但它至少纠正了使您的尝试失败的问题。

关于python - 将nohup重定向到脚本上的stdout,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56378716/

10-16 10:33