나는 사용자 정의 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
출력이 비어 있습니다.
이 모든 작업은 루트로 수행됩니다.
시도해 볼 것이 더 있다는 것을 알고 있지만 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