私はカスタムJavaサーバーを作成しました。/etc/init/myservice.config
Upstart()を使用して起動時に実行します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