当通过Putty连接到远程主机(OS Solaris)并且连接丢失时,如何捕获Java应用程序输出(System.out



如果远程会话丢失并再次连接,如何在通过Putty连接到远程主机(OS Solaris)时捕获Java应用程序输出(System.out.println())?远程主机上的Java应用程序是这样启动的:

java-jar/SomeApplication.jar;

现在输出是可见的。但是,如果我退出远程会话并再次连接——尽管同一个java应用程序仍在运行,但看不到更多的输出——我可以通过发出以下命令来看到它:

ps-ef|grepjava

输出为:

根5221 1 0 20:04:15?1:20 java-jarSomeApplication.jar

应用程序ID是5221,它正在运行,但它的输出在某个地方消失了。。

一个快速而简洁的建议是在screen会话中运行应用程序(查看Solaris软件包)。

首先,您启动屏幕:

$ screen

然后在screen内启动应用程序,就像往常一样:

$ java -jar /SomeApplication.jar

你已经做好了准备。您不需要尾随的&:您可以分离(见下文)并注销;屏幕会话将保持运行。下次登录时,只需发布:

$ screen -x

会话及其输出将被重新附加

快速参考:

  • 使用CTRL+a12>(先是<kbd]CTRL>+a在一起,然后是d会话分离,这样您就可以离开screen会话(内部运行java应用程序),返回Solaris shell并执行其他操作,包括优雅地注销。

  • 使用CTRL+a>退出复制模式。

还有许多其他有用的功能,只需快速阅读介绍:)

日志文件在这些场景中发挥得更好。系统输出也是昂贵的操作。或者在启动java程序时,将错误/输出重定向到临时文件。所以你可以稍后查看。

java -jar /SomeApplication.jar > wherever_you_want_output.log 2>&1 &

>将system.out.println重定向到文件2>&1将system.err.println发送到同一个文件(您也可以放置2> error_file.log以获得单独的system.err.println()输出。

不过,从长远来看,您应该通过log4j或java日志框架来使用日志框架。

如果你想观察输出,然后随着它的增长,你可以做一个tail -f whatever_you_want_output.log

最新更新