포트를 사용하여 "보이지 않는" 프로세스를 종료하는 방법

포트를 사용하여 "보이지 않는" 프로세스를 종료하는 방법

Linux 시스템에서 Glassfish 서버를 시작하려고 합니다.

./startserv

그러면 다음 메시지가 반환됩니다.

There is a process already running using the admin port 4848 -- it is probably another instance of a Glassfish server

다음 명령을 사용하여 이것이 어떤 프로세스인지 확인해보세요.

lsof -t -i tcp:4848

Glassfish를 실행하는 다른 컴퓨터에서 이 명령은 Glassfish에서 사용하는 프로세스 ID를 반환합니다. 그러나 문제가 있는 컴퓨터에서는 아무 것도 반환되지 않습니다.

도움이 없다면 포트 4848을 사용하여 프로세스를 식별하고 종료하는 가장 좋은 방법은 무엇입니까 lsof -t -i tcp:4848?

감사해요

답변1

여기서는 아마도 두 가지 일이 일어나고 있을 것입니다. 하나는 포트에서 무언가가 수신 중인데 lsof와 친구들이 이를 놓쳤거나 시작 스크립트/오류 메시지가 혼란스럽다는 것입니다.

네트워크 네임스페이스는 포트를 숨길 수 있지만 proc 파일 시스템을 직접 쿼리하려면 다음을 시도하십시오.

grep 12f0 /proc/net/tcp
grep 12f0 /proc/net/tcp6

12f0은 16진수로 4848이며, 이 파일은 커널이 TCPv4 및 TCPv6 소켓에 대한 정보를 저장하는 곳입니다.

일치하는 라인을 얻으면 실제로 포트에서 수신 대기 중인 것이 있으며 도구는 sus입니다. 히트 없음은 네임스페이스를 실행 중이거나 시작 스크립트가 실행 중임을 의미합니다.

netcat을 사용하여 소켓이 실제로 사용 중인지 확인할 수도 있습니다.

nc -l 4848

조용하다면 괜찮습니다. 소켓이 사용 중이라고 불평하면 실제로 사용 중인 것이므로 도구와 네임스페이스가 괜찮은지 확인해야 합니다.

관련 정보