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

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

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

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

관련 정보