Estou instalando o hadoop no meu sistema Ubuntu. Quando inicio, ele informa que a porta 9000 está ocupada.
Eu usei:
netstat -nlp|grep 9000
para ver se existe essa porta e eu consegui isso:
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN
Mas como posso obter o PID do processo que o está mantendo?
netstat
O comando pode funcionar em muitos sistemas operacionais para permitir isso, basta encontrar os argumentos que garantirão que ele mostre pids ao longo de cada porta aberta conhecida.Respostas:
No Linux, você deve ser o root ou o proprietário do processo para obter as informações que deseja. Como tal, para processos em execução como outro usuário, a pré
sudo
- anexação é o que você precisa. Além disso, nos modernos sistemas Linux,ss
existe uma ferramenta para fazer isso:Você também pode usar a mesma chamada que está usando no momento, mas lembre-se de
sudo
:Você também pode usar lsof:
fonte
-p
opção é para protocolo e não para processo. Veja esta perguntaFinding the PID of the process using a specific port
sudo
no topo.lsof -ti tcp:80
Além disso, você pode usar o
lsof
utilitário. Precisa ser root.fonte
established
conexões, não apenas processos que sãolistening
.lsof -i :25 -Fp
, o que produz resultados semelhantesp1234
.Eu estou usando "CentOS 7 mínima", que tem nem
netstat
nemlsof
. Mas muitas distribuições Linux têm o comando socket statistics (iess
).Aqui está um exemplo de execução:
fonte
ss -pntl 'sport = :6379'
A execução do comando
sudo
daria a você oPID
. Na minha máquina de desenvolvimento, recebo:E, como mencionado em outras respostas, você também pode usar
ss
oslsof
comandos ou .fonte
sudo
ID do processo de exibiçãosudo netstat -nlp | grep 34157
ainda for exibido em-
vez de PID?Também você pode usar
fuser
:A saída :
fonte
sudo
que o processosudo