macos - 閉じない - マック くるくる 強制終了




Mac上でプロセスロックポート3000を検索(および強制終了)する (19)

  1. あなたはnetstatを試すことができます

    netstat -vanp tcp | grep 3000
    
  2. macOS El Capitan以降の場合(またはnetstatが-pサポートしていない場合)、 lsof

    sudo lsof -i tcp:3000 
    
  3. Centos 7

    netstat -vanp --tcp | grep 3000
    

TCPポートをリッスン/使用するプロセスを見つけるにはどうすればよいですか? 私はマックOS Xです。

時々、クラッシュやバグの後に、私のレールアプリがポート3000をロックしています。私はps -efを使って見つけることができません...残忍なことをどうやって見つけて、残酷に殺すのですか?

やっているとき

rails server

私は得る

既に使用中のアドレス - bind(2)(Errno :: EADDRINUSE)

2014年の更新:

killコマンドを実行した後、pidファイルを削除する必要がありますrm ~/mypath/myrailsapp/tmp/pids/server.pid


Ctrl + Zの代わりにCtrl + Cを使用して、以前実行していたアプリを終了してみてください。

そうでなければ、 [sudo] lsof -i :3000実行することで、ポート3000上でプロセスが実行されていることがわかります

次にkill kill -9 <PID>プロセスを終了します。


TL; DR:

lsof -ti tcp:3000 -sTCP:LISTEN | xargs kill

ポートを使用するクライアントとサーバーの両方が存在する状況にある場合は、次のようになります。

$ lsof -i tcp:3000
COMMAND     PID         USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
node       2043 benjiegillam   21u  IPv4 0xb1b4330c68e5ad61      0t0  TCP localhost:3000->localhost:52557 (ESTABLISHED)
node       2043 benjiegillam   22u  IPv4 0xb1b4330c8d393021      0t0  TCP localhost:3000->localhost:52344 (ESTABLISHED)
node       2043 benjiegillam   25u  IPv4 0xb1b4330c8eaf16c1      0t0  TCP localhost:3000 (LISTEN)
Google    99004 benjiegillam  125u  IPv4 0xb1b4330c8bb05021      0t0  TCP localhost:52557->localhost:3000 (ESTABLISHED)
Google    99004 benjiegillam  216u  IPv4 0xb1b4330c8e5ea6c1      0t0  TCP localhost:52344->localhost:3000 (ESTABLISHED)

あなたはおそらく両方を殺したくありません。

この状況では、 -sTCP:LISTENを使用して、リッスンしているプロセスのpidのみを表示できます。 これを-tと組み合わせると、プロセスを自動的に終了させることができます。

lsof -ti tcp:3000 -sTCP:LISTEN | xargs kill

sindresorhusgithubツールを使用して、これを行うことができます:

$ fkill :3000

lsof -i:3000使用することができます。

それは "List Open Files"です。 これにより、プロセスの一覧と、それらが使用するファイルとポートが一覧表示されます。


~/.bash_profile追加する:

function killTcpListen () {
  kill -QUIT $(sudo lsof -sTCP:LISTEN -i tcp:$1 -t)
}

source ~/.bash_profilesource ~/.bash_profileして実行する

killTcpListen 8080


あなたはコマンドを使用することができます

lsof -h

このコマンドを使用してポートを見つける方法は

-i i   select by IPv[46] address: [46][proto][@host|addr][:svc_list|port_list]

あなたの場合は

lsof -i :3000

この1つのコマンドラインは覚えやすいです:

npx kill-port 3000

より強力な検索ツール:

npx fkill-cli

PS:サードパーティ製のjavascriptパッケージを使用しています

ソース: tweet | github


これを達成するための可能な方法:

トップコマンドは、システムのリソース使用状況を表示し、最も多くのシステムリソースを占有しているプロセスを表示する伝統的な方法です。 Topはプロセスのリストを表示し、最も多くのCPUを使用するプロセスのリストを表示します。

ps

psコマンドは実行中のプロセスを一覧表示します。 次のコマンドは、システムで実行されているすべてのプロセスをリストします。

ps -A

他のコマンドを使用せずに特定のプロセスを検索するためにgrepを通して出力をパイプすることもできます。 次のコマンドは、Firefoxプロセスを検索します。

ps -A | grep firefox

シグナルをプログラムに渡す最も一般的な方法は、killコマンドです。

kill PID_of_target_process

lsof

開いているすべてのファイルとそのファイルを開いたプロセスのリスト。

lsof -i -P | grep -i "listen"
kill -9 PID

または

 lsof -i tcp:3000 

そのようなプロセスを強制的に終了させるには、次のコマンドを使用します

lsof -n -i4TCP:3000 

ここで、3000はプロセスが実行されているポート番号です

これはプロセスID(PID)を返し、実行します

kill -9 "PID"

PIDを、最初のコマンドを実行した後に取得する番号に置き換えます


ステップ1:実行中のサーバを見つける: ps aux | grep puma ps aux | grep pumaステップ2:それらのサーバを強制終了するKill -9 [サーバ番号]


ターミナルを使ってこのコードを試してください:

$ killall -9 ruby

ポート3000を使用してプロセスのPIDを抽出し、それを強制終了する1つのライナー。

lsof -ti:3000 | xargs kill

-tフラグは、lsof出力からPID以外のものをすべて削除して、簡単に終了させます。


ポートをブロックしているプロセスを表示するには:

netstat -vanp tcp | grep 3000

ポートをブロックしているプロセスを強制終了するには:

kill $(lsof -t -i :3000)


上記の何も私のために働かなかった。 私の経験を持つ人は誰でも次のものを試すことができます(私にとってはうまくいった)。

実行:

lsof -i :3000 (where 3000 is your current port in use)

報告されたPIDのステータスをチェックする:

ps ax | grep <PID>

最終的には、 "それを借りて":

kill -QUIT <PID>

上記の作業のどれも試していない場合:

lsof -n -i4TCP:3000

検索:

[sudo] lsof -i :3000

殺します:

kill -9 <PID>

私はこれのための少しの機能を作った、あなたのrcファイルに追加する( .bashrc.zshrcなど)

function kill-by-port {
  if [ "$1" != "" ]
  then
    kill -9 $(lsof -ni tcp:"$1" | awk 'FNR==2{print $2}')
  else
    echo "Missing argument! Usage: kill-by-port $PORT"
  fi
}

kill-by-port 3000とタイプするだけで、あなたのレールサーバをkillすることができます(それが実行されているポートに3000を代入してください)

それに失敗すると、あなたはいつでもrailsのルートディレクトリからkill -9 $(cat tmp/pids/server.pid)


lsof -P | grep ':3000' | awk '{print $2}'

これはあなたにMacOSでテストされた単なるpidを与えます。





process