web-dev-qa-db-ja.com

node.jsで開いているプロセスを強制終了する方法は?

私は崇高なNode.jsのビルドシステムをセットアップしようとしているので、F7を押して、開いたファイルの「ノード」を呼び出すことができます。問題は、プロセスが永久に開かれるため、F7を2回目に使用するとアドインが使用できることです。

Node.jsから開かれた「node.exe」プロセスを強制終了する方法はありますか?

20
MaiaVictor

次のコマンドセットを使用して、特定のポートで実行されているプロセスを特定し、コマンドラインから終了します。

   Sudo fuser -v 5000/tcp // gives you the process running on port 5000

以下に示すような詳細を出力します

                        USER        PID ACCESS COMMAND
   5000/tcp:            almypal     20834 F.... node

次に使用する

   Sudo fuser -vk 5000/tcp

プロセスを終了します。を使用してもう一度確認してください

   Sudo fuser -v 5000/tcp

プロセスが終了したことを確認します。

Windowsでは、次の手順を使用できます

  C:\> tasklist // will show the list of running process'

  Image Name        PID Session Name    Session#    Mem Usage
  System            4   console                 0   236 K
  ...
  node.exe         3592 console                0    8440 k

ノードプロセス(この場合は3592)に対応するPIDに注意してください。次にtaskkillを実行してプロセスを終了します。

  C:\> taskkill /F /PID 3592

または/ IMスイッチ

  C:\> taskkill /F /IM node.exe
38
almypal

Node.js内から:

var die = function(quitMsg)
{
    console.error(quitMsg)
    process.exit(1);
} 

die('Process quit');

特定の 利用可能なメソッド があり、プロセスIDでプロセスを終了するPOSIX(つまり、Windowsではない)でのみ利用可能です。

また、このメソッドを使用してkill()シグナルを送信できる可能性があることに注意してください。これは、Windowsでは使用できないとは言いません。

process.kill(pid, [signal])
3
Alex W

あなたがすべてのプロセスを殺したいなら

Sudo killall -9 node

選択したポートのプロセスを強制終了する場合

Sudo kill `Sudo lsof -t -i:3100 

ここで3100はポートです

0
Renish Gotecha

あなたが言うsublimeがsublimeTextプラグインである場合、私は同じ問題を抱えており、TCP server = shutdown 'from python code、then

app.js

 TCPserver
        .on('connection', function(socket)
        {
            socket.pipe(require('through')
                (function(data)
                { //----------------------------
                    if (data.toString() === 'shutdown')
                    {
                        process.exit();
                    }
                    //--------------------------
                }));
            socket.end();
        })
0
user1028880

@Alex Wが言ったことと同様に、次のノード関数を使用してプロセスIDまたはPIDがある限り、プロセスにkillシグナルを送信できます。

process.kill(pid, [signal])

私の場合、child_process().spawn.pidを生成するときにPIDをすぐに利用できました。私はそれをテストしましたが、Win 7 x64で動作します。

0
daniel.caspers