Prozess killen, der auf einen bestimmten Port horcht
Manchmal kommt es vor, dass Skripte nicht ordnungsgemäß gestoppt werden können. In der Webentwicklung wird man dann gerne mal mit der Fehlermeldung „Port 12345 already in use“ begrüßt. Generell ist es unter MacOS nicht schwierig die entsprechende Prozess-ID herauszufinden, allerdings kann sich doch unmöglich jemand den Befehl dazu merken. Was brauchen wir also? Unser kleines, dickes Notizbuch praktisches Bash-Script, mit dem wir den Prozess killen, der auf einen bestimmten Port horcht.
Leg dazu einfach eine Datei in deinem HOME
Verzeichnis an, welches idealerweise bereits in deinem $PATH
ist, sodass du es von überall aus aufrufen kannst.
$ touch $HOME/bin/kill-process-by-port $ chmod +x $HOME/bin/kill-process-by-port
Code
#!/bin/bash
# Check if a port number is provided
if [ -z "$1" ]; then
echo "Please provide a port number! Example: kill-procces-by-port 8701"
exit 1
fi
PORT=$1
# Find all processes listening on the given port
PIDS=$(sudo lsof -t -i :"$PORT")
# Check if any PIDs were found
if [ -n "$PIDS" ]; then
echo "Terminating the following processes on port $PORT: $PIDS"
sudo kill -9 $PIDS
echo "All processes on port $PORT have been terminated."
else
echo "No process found on port $PORT."
fi
Nun kannst du das Skript von überall aus in deinem Terminal mit folgendem Befehl aufrufen:
$ kill-process-by-port PORT $ kill-process-by-port 8080