ログファイルなしでUpstartジョブのコンソール出力を表示する

ログファイルなしでUpstartジョブのコンソール出力を表示する

私はカスタムJavaサーバーを作成しました。/etc/init/myservice.configUpstart()を使用して起動時に実行しますjava -jar myservice.jar

Javaプロセスは、System.out.printlnさまざまなログメッセージを作成するために使用されます。

リモートSSHセッションで接続して出力を表示できるようにしたいです。

更新:ログファイルを作成、循環、管理する手間をかけずにこれを実行したいと思います。

以下を含む多くの投稿を見ました。 別のbashセッションで実行されているプロセスの出力をどのように表示できますか?

私はこれを試しましたが、catすべてのtail -f /proc/<procid>/fd/0 /proc/<procid>/fd/1 /proc/<procid>/fd/2出力が空です。

これはすべてrootとして実行されます。

試してみるのがもっとあることを知っていますが、fdが空なので懐疑的です(または少なくとも私の目にはそうです)。

私はUbunutu Server 14.04 LTS、Oracle Java 8を実行しています。

更新:画面を試してみたかったが、この画面には適していないことがわかりました。 権限のないユーザーの開始タスクを使用してスクリーンセッションを開始するにはどうすればよいですか?

答え1

私が考えることができる最も簡単な方法は、出力を次のファイルにリダイレクトすることです。

java -jar myservice.jar >> /var/tmp/myservice

出力量が多い場合はログが大きくなる可能性があるため、cron数時間ごとにジョブにまとめるか、ログを循環させる必要がある場合があります。

System.out.println代わりに出力を印刷していることを確認してくださいSystem.err.println。その場合は、errエラーストリームをリダイレクトする必要があります。

java -jar myservice.jar 2>> /var/tmp/myservice

答え2

java -jar myservice.jar > mylogfile.txt 2>&1

これは2>&1、プログラムのエラーも記録することを意味します。mylogfile.txt

関連情報