2016-02-21 1 views
1

Je suis en train d'écrire une commande d'arrêt pour mon application NodeJS qui greps un processus de noeud et le tue, jusqu'à présent, j'ai:Tuer un processus de nœud à l'aide d'un script d'arrêt de package.json

{ 
    ... 
    "scripts": { 
    "start": "node src/main/webapp/index.js", 
    "stop": "kill \"$(ps ux | grep node | grep -Eo '^\\s+[0-9]+' | tr -d '[[:space:]]')\"" 
    } 
    ... 
} 

Si je Je me lance ps ux

PID PPID PGID  WINPID TTY   UID STIME COMMAND 
12228 8428 12228  12960 cons0  197608 22:02:12 /usr/bin/ps 
4840  1 4840  4840 cons0  197608 22:01:46 /usr/bin/bash 
13484 12292 12292  8024 cons0  197608 22:02:07 /c/Program Files/nodejs/node 

Si je cours echo "$(ps ux | grep node | grep -Eo '^\s+[0-9]+' | tr -d '[[:space:]]')" puis-je obtenir la sortie 13484 donc je sais que les travaux de bits. Cependant quand je lance npm stop je reçois l'erreur:

npm ERR! Windows_NT 6.3.9600 
npm ERR! argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "stop" 
npm ERR! node v0.12.4 
npm ERR! npm v2.10.1 
npm ERR! code ELIFECYCLE 
npm ERR! [email protected] stop: `kill "$(ps ux | grep node | grep -Eo '^\s+[0-9]+' | tr -d '[[:space:]]')"` 
npm ERR! Exit status 1 
npm ERR! 
npm ERR! Failed at the [email protected] stop script 'kill "$(ps ux | grep node | grep -Eo '^\s+[0-9]+' | tr -d '[[:space:]]')"'. 
npm ERR! This is most likely a problem with the app package, 
npm ERR! not with npm itself. 
npm ERR! Tell the author that this fails on your system: 
npm ERR!  kill "$(ps ux | grep node | grep -Eo '^\s+[0-9]+' | tr -d '[[:space:]]')" 
npm ERR! You can get their info via: 
npm ERR!  npm owner ls app 
npm ERR! There is likely additional logging output above. 

Pourquoi est-ce brisement? Y a-t-il un moyen plus facile de faire cela?

Répondre

1

Cela semble fonctionner:

"scripts": { 
    "start": "node src/main/webapp/index.js & echo $! > .pid", 
    "stop": "kill $(cat .pid)" 
} 

Peut-être que cela est assez bon pour ce que vous essayez d'atteindre, mais je pense qu'il ya de meilleures façons.