내 애플리케이션에 대한 초기화 스크립트가 있고 스크립트에서 PID를 얻을 수 있다는 것을 알고 있습니다. PID와 연결된 TCP 수신 대기 포트를 출력하기 위해 상태 명령에 몇 가지 논리를 추가하려고 합니다. 다음 질문에 대한 답변을 자세히 읽었습니다.특정 PID에 대한 현재 네트워크 연결을 모두 나열하는 방법은 무엇입니까?, 하지만 이 상황에서는 어느 것이 가장 적합한지 아직 잘 모르겠습니다.
중요하지는 않지만 가능한 한 이식 가능하고 실행에 실패하면 정상적으로 실패하는지 확인하고 싶습니다. 지금까지 몇 가지 대안을 생각해 냈지만 어느 것이 가장 휴대성이 좋은지(둘 다 내 테스트 환경에서 작동함) 또는 이를 달성할 수 있는 더 좋은 방법이 있는지 잘 모르겠습니다.
지금까지 내가 생각해낸 내용은 다음과 같습니다.
lsof -anP -i -p $APP_PID -sTCP:LISTEN -Fn | \
sed -e '/^n/ !d; /127.0.0.1/ d; s/n.*:\(.*\)/\1/' | sort -h | paste -s -d','
netstat -tlpn | grep $APP_PID | \
awk '$4!~/127.0.0.1/ {split($4,listener,":"); print listener[2]}' | \
sort -h | paste -s -d','
(아마도 grep을 awk에 넣을 수는 있겠지만 awk에 익숙하지 않습니다.)
둘 다 아래와 같이 목록을 출력합니다.
4500,9233,9475,27000
대상 컴퓨터에서 한 명령과 다른 명령을 사용할 수 있는 경우 어떤 명령을 실행해야 하는지 테스트할 수 있는 좋은 방법이 있습니까? 아니면 이식성 측면에서 한 명령 조합이 다른 명령 조합보다 낫습니까? (Linux 대상을 가정하고 echo
스크립트 외부에서 LSB 정의 함수만 사용할 수 있습니다)