쉘 스크립트를 통해 자바 쓰레드 덤프를 가져 와서 파일에 추가하고 싶을 때 catalina.out으로 가야합니다. 여기서 FD 1은 다음과 같습니다. 자바 프로세스를 가리킨다. kill -3 $(pidof java) |tee -a /dumpfile
을 시도했지만 Java의 STDOUT이 스크립트의 제어 터미널이 아니기 때문에 빈 파일로 끝납니다. Java 프로세스를 닫지 않고 출력을 리디렉션하여 다시 열지 않고도이 작업을 수행 할 수있는 방법이 있습니까? bash 쉘이있는 Linux.제어 터미널이 아닌 프로세스에서 리디렉션 수행하기
0
A
답변
0
다음은 스레드 덤프를 캡처하고 전자 메일로 보내는 데 사용 된 솔루션입니다. 프로세스의 STDOUT을 리디렉션하지 않으면 catalina.out에서 관련 정보를 가져옵니다.
#!/bin/bash
CATOUT=/opt/tomcat/logs/catalina.out
DUMPSTART=$(grep -n dump|tail -n1|cut -d':' -f1)
DUMPEND=$(wc -l $CATOUT|cut -d' ' -f1)
kill -3 $(pidof java)
sed -n "${DUMPSTART},${DUMPEND)p" $CATOUT |mail -s "Java thead dump" [email protected]
1
다음이 시도 :
1 터미널에서 :
tail -f /proc/$(pidof java)/fd/1 | tee -a /dumpfile
2- 다른 터미널에서 :
kill -3 $(pidof java)
을 이렇게하면/proc 디렉토리/java_pid /에 대한 사용 권한을 읽고있는 것을 전제로 fd/1은 루트라면 파일이어야한다.
관련 문제
- 1. Python 패키지가 터미널이 아닌 Pycharm에서 인식되었습니다.
- 2. stdin이 터미널이 아닌 경우에도 Python 하위 프로세스에서 stdin으로 명령을 보냅니 까? 파이썬 코드에서
- 3. 캔트 프로세스에서 표준 출력을 리디렉션
- 4. 루트가 아닌 프로세스에서 jailkit 실행
- 5. 는 * nix 프로세스 read() EOF를위한 제어 터미널이 될 수 있습니까?
- 6. www가 아닌 magento로 리디렉션
- 7. Mac OS에서 터미널이 아닌 다른 응용 프로그램의 Python 경로 변경
- 8. 자바 간단한 네트워킹 프로그램이 터미널이 아닌 이클립스에서 작동합니다.
- 9. 터미널에서 명령을 시작하여 터미널이 부모가 아닌 방법은 무엇입니까?
- 10. 프로세스에서 wx.TextCtrl 제어로 비표준 실시간 리디렉션 stdout
- 11. 하위 프로세스에서 인쇄를 로그 파일로 리디렉션
- 12. execded 프로세스에서 stdin/stdout을 Perl 파이프로 리디렉션
- 13. stdout을 여러 프로세스에서 파이썬으로 리디렉션 로깅 모듈
- 14. www가 아닌 www를 www가 아닌 www로 리디렉션
- 15. stdin이 터미널이 아니기 때문에 Dotcloud 의사 터미널이 할당되지 않습니다.
- 16. 밖에 USB 터미널이 있습니까
- 17. 우분투 터미널이 변경 되었습니까?
- 18. labview 터미널이 회색으로 표시됨
- 19. Intellij 터미널이 엉망입니다.
- 20. 열린 상태에서 터미널이 멈춤
- 21. 이미지가 아닌 페이지에만 404 리디렉션
- 22. htaccess로 www가 아닌 URL로 리디렉션
- 23. 특정 사용자가 아닌 경우 리디렉션
- 24. 리디렉션 부모가 아닌 자식 htaccess
- 25. 액세스 제어 라이브러리의 무한 리디렉션 방지
- 26. 로그인 제어 및 해당 페이지로 리디렉션
- 27. 한 컨트롤러에서 다른 컨트롤러로 리디렉션 제어
- 28. 파이썬 하위 프로세스 표준 리디렉션, 경고 리디렉션, 여전히 제어 흐름 중지 발생
- 29. 어떤 버전 제어 시스템이 git 개발 프로세스에서 사용됩니까
- 30. 데이터베이스 버전/스키마가 아닌 데이터의 변경 제어?
나는 내 웹 서버 중 하나에서 시도해도 정상적으로 작동합니다. – Tiago