배경 : Java 프로세스가 포트에 바인딩됩니다. 이제 Java 프로세스는 (jdk8s -XX : OnOutOfMemoryError를 사용하여) 서브 프로세스에서 쉘 스크립트를 시작합니다. 이 쉘 스크립트는 java 프로세스를 성공적으로 종료합니다. 불행히도 포트가 여전히 하위 프로세스에 바인딩되어 있기 때문에 Java 프로세스를 다시 시작할 수 없습니다 ...셸 : 열린 포트의 FD를 얻는 방법
저는 소켓에 연결된 모든 FD를 닫을 수 있다는 것을 알고 있습니다. 그래서 현재의 해결책은
INODE=$(netstat -tulpen | grep ":$PORT " | awk '{print $8}')
FD_SOCKET=$(ls -l /proc/$$/fd | grep socket | grep "\[$INODE\]" | grep -o " [0-9]\+ -> " | awk '{print $1}')
eval "exec $FD_SOCKET>&-"
입니다. 실제로이 파이프 괴물을 피할 수 있습니까?