Como reiniciar um nó.servidor js
instalei e está a correr um nó.servidor js no osx. Pesquisei um módulo de chat e estou feliz em executá-lo. Alterei algumas peças e preciso reiniciar o servidor para ver os efeitos.
só sei reiniciar fechando a janela do terminal e depois reabrindo-a e depois executando o nó chatdemo.js outra vez.
Há alguma maneira de reiniciar sem fechar o terminal? Obrigado.8 answers
Se estiver apenas a correr (não um servidor), então basta usar Ctrl-C
.
$ ps aux | grep node
you PID 1.5 0.2 44172 8260 pts/2 S 15:25 0:00 node app.js
$ kill -2 PID
Em que PID
é substituído pelo número na saída de ps
.
Durante o desenvolvimento, a melhor maneira de reiniciar o servidor para ver as alterações feitas é usar nodemon
MPN instalar nodemon-g
Nodemon[nome da aplicação]
O Nodemon irá ver os ficheiros no directório em que o nodemon foi iniciado, e se eles mudarem, irá reiniciar automaticamente a sua aplicação de nós.
Check nodemon git repo: https://github.com/remy/nodemon
Neste caso, está a reiniciar o seu nó.servidor js muitas vezes porque está em desenvolvimento ativo e você está fazendo mudanças o tempo todo. Há um grande script {[[2]}hot reload que vai lidar com isso para você, observando todos os seus .ficheiros js e reiniciar o seu nó.servidor js se algum desses arquivos tiver mudado. Apenas o bilhete para o desenvolvimento rápido e teste.
O guião e a explicação sobre como usá-lo estão aqui em Draco Blue.
Eu tinha o mesmo problema e depois escrevi este script shell que mata todos os processos de nó existentes:
#!/bin/bash
echo "The following node processes were found:"
ps aux | grep " node " | grep -v grep
nodepids=$(ps aux | grep " node " | grep -v grep | cut -c10-15)
echo "OK, so we will stop these process/es now..."
for nodepid in ${nodepids[@]}
do
echo "Stopping PID :"$nodepid
kill -9 $nodepid
done
echo "Done"
Depois disto é gravado como um programa de consola (xxx.sh) file você pode querer adicioná-lo ao seu caminho como Descrito aqui.
(por favor, note que isto irá matar todos os processos com " nó " no seu nome, excepto o próprio grep, por isso acho que, em alguns casos, também poderá matar alguns outros processos com um nome semelhante) {[[3]}
wmic process where "commandline like '%my_app.js%' AND name='node.exe' " CALL Terminate
Depois pode executar a sua aplicação de novo:
node my_app.js
Também o pode usar em lote, com aspas de escape:
wmic process where "commandline like '%%my_app.js%%' AND name='node.exe' " CALL Terminate
node my_app.js
Usar " kill-9 [PID]" ou "killall-9 node" funcionou para mim onde "kill-2 [PID]" não funcionou.
Se eu sou apenas executar o nó de aplicativo de console (não usando para sempre, etc) eu usar o control + C, não tenho certeza se OSX tem a mesma combinação de teclas para terminar, mas muito mais rápido do que encontrar o id do processo e matá-lo, você também pode adicionar o seguinte código para o bate-papo app que você estiver usando e, em seguida, digite 'exit' no console, sempre que você quiser fechar o aplicativo.
process.stdin.resume();
process.stdin.setEncoding('utf8');
process.stdin.on('data', function(data) {
if (data == 'exit\n') process.exit();
});
Mas sobre como matar apenas o(s) nó (s) demónio (s), o seguinte funciona para mim:
pkill -HUP node