Node.js のプロセスが立ち上がりっぱなしになった際に kill する方法

phi phi on Node.js

gulp で express, watch と2つのプロセスを立ち上げてるときに片方でエラーがでると片方だけプロセスが立ち上がった状態になってしまうことがあります.

その状態でもう一度同じ gulp タスクを実行すると下記のようなエラーがでて再起動できなくなります.

gulp  
[17:24:35] Using gulpfile <project_path>/gulpfile.js
[17:24:35] Starting 'watch'...
[17:24:35] Finished 'watch' after 26 ms
[17:24:35] Starting 'server'...
[17:24:35] Finished 'server' after 9.16 ms
[17:24:35] Starting 'default'...
[17:24:35] Finished 'default' after 5.26 μs
livereload[tiny-lr] listening on 35729 ...  
events.js:85  
      throw er; // Unhandled 'error' event
            ^
Error: listen EADDRINUSE  
    at exports._errnoException (util.js:746:11)
    at Server._listen2 (net.js:1156:14)
    at listen (net.js:1182:10)
    at Server.listen (net.js:1267:5)
    at EventEmitter.listen (<project_path>/node_modules/express/lib/application.js:617:24)
    at Object.<anonymous> (<project_path>/src/app.js:98:18)
    at Module._compile (module.js:460:26)
    at Object.Module._extensions..js (module.js:478:10)
    at Module.load (module.js:355:32)
    at Function.Module._load (module.js:310:12)

プロセスが残ってるのが原因ですね. node のプロセスを kill すれば良いだけなのですが方法は2通りあります.

プロセス ID を調べて kill する

下記のコマンドでプロセス ID を調べて

$ ps aux | grep node

下記のコマンドでプロセスを kill できます.

$ kill -9 <PROCESS_ID>

node プロセスを全て kill する

他の node プロセス全部も死んじゃいますが下記のコマンドだと手っ取り早く kill できます.

$ killall node

以上, 備忘録でしたー