Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

Funções do cluster e encerramento de processos

Olá pessoal,

Minha primeira dúvida é sobre o encerramento de processos no terminal. Executei o código abaixo que foi informado em aula e não funcionou:

darla@DESKTOP-MO1S2U8 ~
λ kill -9 9736
bash: kill: (9736) - No such process
darla@DESKTOP-MO1S2U8 ~
λ kill 9736
bash: kill: (9736) - No such process
darla@DESKTOP-MO1S2U8 ~
λ kill -9 9736
bash: kill: (9736) - No such process
darla@DESKTOP-MO1S2U8 ~
λ kill -9 11764
bash: kill: (11764) - No such process
darla@DESKTOP-MO1S2U8 ~
λ kill -15 11764
bash: kill: (11764) - No such process

Processos listados no terminal:

Servidor escutando na porta 3000.
Conectado no processo: 8232
Servidor escutando na porta 3000.
Conectado no processo: 11764
Servidor escutando na porta 3000.
Conectado no processo: 8244
Servidor escutando na porta 3000.
Conectado no processo: 9736

A segunda é sobre os parâmetros da função on no cluster. Estava consultado a documentação do Node e na página do cluster mostra o parâmetro death e não parece dizer nada sobre o exit. Então gostaria de saber qual a diferença entre esses dois (se é que existe).

Obrigado!

4 respostas

Oi Darlan. Tudo bem?

Com relação ao parâmetros, a documentação oficial do Node tanto nas versões LTS quanto Current, utilizam exit mesmo. Veja: https://nodejs.org/dist/latest-v6.x/docs/api/cluster.html#cluster_event_exit_1

Eu realmente encontrei alguma documentação utilizando esse parâmetro death mas em versões bem mais antigas, como a 0.6.19. Acredito que tenha sido refatorado para o exit.

Sobre o processo, é bem estranho. Deveria conseguir matar sim. Experimenta listar os processos que de fato estão rodando no terminal para garantir que são esses mesmo que aparecem no print que o Node faz.

Você pode rodar um comando semelhante a este abaixo para filtrar (direto no terminal mesmo):

ps aux | grep node

Você pode tentar observar também qual usuário é pai desse processo e se o usuário com o qual vc está tentando executar o kill tem permissão para visualizar e matar processos desse possível outro usuário.

Tenta começar a investigação por essa linha e conforme for evoluindo, posta aqui os seus passos que a gente vai seguindo até resolver. blz? =)

Obrigado, Julio! Realmente, sobre o parâmetro, eu havia acessado a página de documentação antiga e não dei devida atenção a versão da documentação, erro da minha parte.

Bom, sobre os processos eu recebi isso como resposta desta vez:

Servidor escutando na porta 3000.
Conectado no processo: 12168
Servidor escutando na porta 3000.
Conectado no processo: 14768
Servidor escutando na porta 3000.
Conectado no processo: 14976
Servidor escutando na porta 3000.
Conectado no processo: 15380
λ ps aux | grep node
    15004   15384   15384       8604  cons0     197609 16:15:38 /c/Program Files/nodejs/node

Recebi números diferentes, tentei matar o primeiro e ele encerrou a execução do nodemon.

/c/Users/darla/AppData/Roaming/npm/nodemon: line 14: 15004 Killed                  node "$basedir/node_modules/nodemon/bin/nodemon.js" "$@"

Obs.: Não sei se pode ajudar em alguma coisa, eu uso o terminal/console cmder no Windows.

solução

Oi Darlan. No momento eu não tenho uma máquina com Windows para replicar o seu cenário, mas eu imagino que seja a forma como ele gerencia o kill que deve funcionar diferente do que esperamos mesmo.

Eu fiz uma busca rápida e achei esse link explicando como matar processos pelo Command Prompt do Windows mesmo. http://forum.thewindowsclub.com/windows-tips-tutorials-articles/29463-kill-processes-using-command-prompt-windows-7-8-10-a.html

Testa dessa maneira. Se não der certo, volta aqui que eu vou atrás de uma máquina com Windows pra replicar certinho. Blz?

Abraço!

Perfeito! Consegui encerrar os processos pelo cmd.

Obrigado!

Abraço!