macos - processus - see process mac terminal




Trouver(et tuer) le processus de verrouillage du port 3000 sur Mac (11)

  1. Vous pouvez essayer netstat

    netstat -vanp tcp | grep 3000
    
  2. Pour OSX El Capitan et plus récent (ou si votre netstat ne supporte pas -p ), utilisez lsof

    sudo lsof -i tcp:3000 
    

Comment trouver les processus qui écoutent / utilisent mes ports tcp? Je suis sur Mac OS X.

Parfois, après un crash ou un bug, mon application rails verrouille le port 3000. Je ne peux pas le trouver en utilisant ps -ef ... Comment puis-je trouver la chose stupide et la tuer, brutalement ...?

En faisant

rails server

Je reçois

Adresse déjà utilisée - bind (2) (Errno :: EADDRINUSE)

Mise à jour 2014:

Pour compléter certaines des réponses ci-dessous: Après l'exécution des commandes kill, la suppression du fichier pid peut être nécessaire rm ~/mypath/myrailsapp/tmp/pids/server.pid


Ajouter à ~/.bash_profile :

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

Puis source ~/.bash_profile et exécutez

killTcpListen 8080



Exécuter en ligne de commande sur OS-X El Captain:

kill -kill `lsof -t -i tcp:3000`

L'option Terse de lsof renvoie uniquement le PID.


Pour tuer de force un processus de ce type, utilisez la commande suivante

lsof -n -i4TCP:3000 

Où 3000 est le numéro de port sur lequel le processus est exécuté

cela renvoie l'ID de processus (PID) et exécuter

kill -9 "PID"

Remplacez le PID par le numéro que vous obtenez après l'exécution de la première commande

Par exemple, si je veux tuer le processus en cours d'exécution sur le port 8080, voici comment je le fais


Rien au-dessus travaillé pour moi. Quelqu'un d'autre avec mon expérience pourrait essayer ce qui suit (a travaillé pour moi):

Courir:

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

puis vérifiez l'état du PID signalé:

ps ax | grep <PID>

enfin, "allez-y avec":

kill -QUIT <PID>

Un one-liner pour extraire le PID du processus en utilisant le port 3000 et le tuer.

lsof -ti:3000 | xargs kill

L'indicateur -t supprime tout sauf le PID de la sortie lsof, ce qui facilite la suppression.


Une des façons de tuer un processus sur un port est d'utiliser la librairie python: freeport ( https://pypi.python.org/pypi/freeport/0.1.9 ). Une fois installé, simplement:

# install freeport
pip install freeport

# Once freeport is installed, use it as follows
$ freeport 3000
Port 3000 is free. Process 16130 killed successfully

Vous pouvez utiliser lsof -i:3000 .

C'est "List Open Files". Cela vous donne une liste des processus et des fichiers et ports qu'ils utilisent.


vous pouvez utiliser la commande

lsof -h

l'utilisation de cette commande pour trouver le port est

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

Dans votre cas, entrez

lsof -i :3000

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

Cela vous donnera juste le pid, testé sur MacOS.





process