gpt4 book ai didi

python - 重定向到通过ssh启动的远程python应用程序的文件输出

转载 作者:行者123 更新时间:2023-12-02 13:58:23 25 4
gpt4 key购买 nike

[编辑]

我在需要调试的远程服务器中有一个python应用程序,当我在本地运行该应用程序时,它会打印一些我需要监视的调试信息(包括python追溯)。

多亏了jeremy,我得以使用tail -F监视输出文件并研究他的代码,得到here,在其中我发现了他的命令的以下变化:

ssh root@$IP 'nohup python /root/python/run_dev_server.py &>> /var/log/myapp.log &'

这几乎使我得到了我想要的信息,登录信息和python追溯,但是我没有得到我需要的使用python打印显示的任何信息。

所以我也尝试了他的命令:
ssh root@$IP 'nohup python /root/python/run_dev_server.py 2>&1 >> /var/log/myapp.log &'

它在文件中记录了打印程序的输出以及日志信息,但是所有的回溯都丢失了,所以我无法调试python异常。

有没有一种方法可以捕获该应用程序生成的所有信息?

预先感谢您的任何建议。

最佳答案

我建议做这样的事情:

/usr/bin/nohup COMMAND  ARGS 2>&1 >> /var/log/COMMAND.log &
/bin/echo $! > /var/run/COMMAND.pid

在关闭您的终端/ ssh session 后,nohup使该进程保持 Activity 状态,>>将所有stdout和stderr保存到/var/log/COMMAND.log中,供您稍后使用“tail -f”。

要获取stacktrace输出(您可以将其打印到stdout,或者通过电子邮件发送类似内容),请在python代码中添加以下行。

导入系统
导入回溯
_old_excepthook = sys.excepthook
def myexcepthook(exctype,value,tb):
#如果extype == KeyboardInterrupt:#处理键盘事件
#现在可以打印到stdout,但可以在此处发送电子邮件或任何内容。
打印traceback.print_tb(tb);
_old_excepthook(exctype,值,回溯)
sys.excepthook = myexcepthook

这将捕获所有异常(包括键盘中断,因此要小心)

关于python - 重定向到通过ssh启动的远程python应用程序的文件输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13202483/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com