我在远程服务器上有一个需要调试的 python 应用程序,当我在本地运行该应用程序时,它会打印一些我需要监控的调试信息(包括 python 回溯)。
我试图将程序的所有输出重定向到一个文件,以便我可以使用尾部-F,这里我发现以下命令可以重定向输出:
ssh root@myserver 'nohup python /root/python/run_dev_server.py &>> /var/log/myapp.log &'
这几乎完全满足了我的需求,登录信息和 python 回溯,但我没有得到使用显示的任何信息打印来自 python,我需要它。
所以我也尝试了这个命令:
ssh root@myserver 'nohup python /root/python/run_dev_server.py 2>&1 >> /var/log/myapp.log &'
这将记录程序的输出打印以及日志信息,但所有的回溯都被发送到我执行脚本的本地终端,并且我的脚本卡住等待远程程序中发生任何异常。
有没有什么方法可以让我无需停止脚本就能捕获应用程序生成的所有信息?
提前感谢任何建议。
答案1
您几乎已经了解了……但是,所有三个管道都需要通过 ssh 重定向到后台进程。Std In、Std Out、Std Err。因此:
nohup /root/python/run_dev_server.py &>/var/log/my.app.log </dev/null &
注意:&> 相当于同时重定向 std out 和 std error。换句话说,它是 ' >> /var/log/myapp.log 2>&1' 的缩写版本
答案2
尝试:
$ ssh -t [email protected] "tail -f /var/log/messages" | tee -a mss.txt