56792


いつもお世話になっています。  
下記の質問についてご存知の方がいらっしゃいましたらご教示を願います。

* * *

## 【質問の主旨】

ブラウザのアドレスバーに`localhost:8080`を入力してアクセスすると、過去にNode.jsで起動したことがあるものの、すでに停止したと思われるページが表示されます。

この表示を停止させて **「このサイトにアクセスできません localhost で接続が拒否されました。」**
と言う画面に表示するためにはどうすれば良いでしょうか？

## 【質問の補足】

### 1.

クライアントPCはmacOSでブラウザはGoogle Chromeを使用しています。下記の作業を行いましたが、ページは表示されたままです。

[code]

    右クリック
    ↓
    [検証]
    ↓
    ブラウザのアドレスバーの左にある[リロード]にカーソルを当てる
    ↓
    [キャッシュの消去とハードの再読み込み]をクリック
    
[/code]

### 2.

Qiitaで[バックグラウンドで動作するNode.jsプロセスを停止させる](https://qiita.com/oishihiroaki/items/85035b81ee13ec5f05c2)というページを見つけました。その記事によると、実行中のプロセスを一覧表示すると言うコマンドとそのプロセスを停止させるコマンドが紹介されています。

[code]

    $ ps -e | grep node | awk '{print $1}'
    54044
    63221
    63239
    63241
    63637
    65703
    
[/code]

とりあえず実行中のプロセスを一覧表示する`ps`コマンドを実行すると上記のプロセスIDが返ってきました。ですがプロセスを停止させる、

[code]

    $ kill -9 [プロセスID]
    
[/code]

はまだ実行していません。`kill`コマンドは使ったことがなく、果たして本当に使っても良いかどうか分かりません。

* * *

以上、ご確認よろしくお願い申し上げます。


CC BY-SA 4.0
2019-07-20T09:54:30.957
56775
2019-07-23T16:41:37.670
2019-07-22T11:24:52.457
3060
32232
question
linux macos node.js
意図せず動作している Node.js のプロセスを確実に停止するには？


> killコマンドは使ったことがなく、果たして本当に使っても良いかどうか分かりません。

使っても問題ありません。

`kill -9 [プロセスID]`
は対象のプロセスにSIGKILLを送ることでプロセスを終了させます。本番環境で動いているサービスなどならともかく、開発用に動いており不要であると感じている場合、SIGKILLを送信しプロセスを終了させてしまっても問題ないでしょう。

参考：[Man page of KILL](https://linuxjm.osdn.jp/html/procps/man1/kill.1.html)


CC BY-SA 4.0
2019-07-21T04:02:10.947
56782
2019-07-21T04:02:10.947
29826
56775
answer


node以外のサービスが動いている可能性がありますので  
現在ポートを使用してるプログラムを表示できる`lsof`コマンドを用い

[code]

    lsof -i:8080
    
[/code]

と実行して下さい。

表示された結果の`PID`という項目がプロセスIDですので、  
こちらを`kill -9 [プロセスID]`で停止させれば表示されなくなるはずです。


CC BY-SA 4.0
2019-07-22T00:45:26.280
56791
2019-07-22T00:45:26.280
3271
56775
answer


今回のケースでは、node.jsプロセスは問題なく終了されていたものの、`localhost:8080`に **Service Worker**
が登録されたままであったために`localhost:8080`にアクセスすると依然としてページが表示されていたと考えられます。

Service
Workerはオフラインの状態でもページを動作させる機能を持つため、node.jsプロセスを終了して`localhost:8080`のサーバーにアクセス不能にしたり、あるいはキャッシュを消したりしても`localhost:8080`を開くとページが表示され続けることがあります。

Service
Workerの登録を解除するは、`localhost:8080`でChromeのデベロッパーツールを開き「Application」タブに移動しService
Workersというところを開きます。下の画像のようにService
Workerが登録されていれば、Unregisterリンクをクリックして登録を解除します。これにより`localhost:8080`を開いてもページが表示されなくなることが期待されます。

[![Applicationパネル](https://i.stack.imgur.com/iMlkM.png)](https://i.stack.imgur.com/iMlkM.png)


CC BY-SA 4.0
2019-07-22T01:44:49.057
56792
2019-07-23T16:41:37.670
2019-07-23T16:41:37.670
30079
30079
56775
answer