我有一个.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/