Einführung
In diesem Projekt lernst du, wie du ein Skript erstellen kannst, das überprüft, ob ein Programm auf einem bestimmten Port läuft, und den vollständigen Pfad des Programms ausgibt oder "OK", wenn kein Programm läuft.
👀 Vorschau
## Beispiel
$ cd /home/labex/project
$ sh get.sh 3000
/usr/lib/code-server/lib/node
$ sh get.sh 43000
OK
🎯 Aufgaben
In diesem Projekt wirst du lernen:
- Wie du ein Zsh-Skript erstellen
- Wie du die
lsof-Befehl verwendest, um zu überprüfen, ob ein Port belegt ist - Wie du die
ps-Befehl verwendest, um den vollständigen Pfad eines laufenden Programms zu erhalten
🏆 Errungenschaften
Nach Abschluss dieses Projekts wirst du in der Lage sein:
- Ein Skript zu schreiben, das das auf einem bestimmten Port laufende Programm identifizieren kann
- Probleme mit Portkonflikten in deiner Entwicklungsumgebung zu beheben
- Den Prozess der Überprüfung auf laufende Programme an bestimmten Ports zu automatisieren
get.sh-Skript erstellen
In diesem Schritt erstellst du das get.sh-Skript, das überprüft, ob ein Programm auf einem bestimmten Port läuft.
Öffne einen Texteditor und erstelle in dem Verzeichnis
/home/labex/projecteine neue Datei namensget.sh.Füge folgenden Code hinzu, um zu überprüfen, ob eine Portnummer als Argument übergeben wurde:
## Überprüfen, ob eine Portnummer als Argument übergeben wurde if [ -z "$1" ]; then echo "Bitte geben Sie eine Portnummer an." exit 1 fiDieser Code überprüft, ob das Skript mit einer Portnummer als Argument aufgerufen wurde. Wenn nicht, wird eine Fehlermeldung ausgegeben und das Skript beendet.
Füge folgenden Code hinzu, um die Portnummer zu erhalten:
## Die Portnummer erhalten port=$1Dieser Code speichert die übergebene Portnummer in der Variablen
port.Speichere die
get.sh-Datei.
Prüfen, ob ein Programm auf dem angegebenen Port läuft
In diesem Schritt fügst du den Code hinzu, um zu überprüfen, ob ein Programm auf dem angegebenen Port läuft.
Füge folgenden Code zum
get.sh-Skript hinzu:## Überprüfen, ob der Port belegt ist process=$(lsof -i :$port -sTCP:LISTEN -Fp | sed 's/^p//')Dieser Code verwendet den
lsof-Befehl, um zu überprüfen, ob ein Prozess auf dem angegebenen Port hört. Die Ausgabe wird in derprocess-Variablen gespeichert.Füge folgenden Code hinzu, um zu überprüfen, ob ein Programm läuft:
## Überprüfen, ob ein Programm läuft if [ -z "$process" ]; then echo "OK" else ## Den vollständigen Pfad des Programms erhalten path=$(ps -p $process -o args=) echo "$path" | awk '{print $1}' fiDieser Code überprüft, ob die
process-Variable leer ist (d.h., kein Programm läuft auf dem angegebenen Port). Wenn sie leer ist, gibt das Skript "OK" aus. Wenn ein Programm läuft, verwendet das Skript denps-Befehl, um den vollständigen Pfad des Programms zu erhalten und ihn auszugeben.Speichere die
get.sh-Datei.
get.sh-Skript testen
In diesem Schritt wirst du das get.sh-Skript testen, um sicherzustellen, dass es wie erwartet funktioniert.
Öffne ein Terminal und navigiere zum Verzeichnis
/home/labex/project.Führe das
get.sh-Skript mit einer Portnummer als Argument aus:$ sh get.sh 3000 /usr/lib/code-server/lib/nodeDies sollte den vollständigen Pfad des auf Port 3000 laufenden Programms ausgeben.
Führe das
get.sh-Skript mit einer nicht belegten Portnummer aus:$ sh get.sh 43000 OKDies sollte "OK" ausgeben, da kein Programm auf Port 43000 läuft.
Wenn das Skript wie erwartet funktioniert, hast du das Projekt abgeschlossen.
Herzlichen Glückwunsch! Du hast ein Skript erstellt, das überprüfen kann, ob ein Programm auf einem bestimmten Port läuft, und den vollständigen Pfad des Programms ausgibt oder "OK", wenn kein Programm läuft.
Zusammenfassung
Herzlichen Glückwunsch! Du hast dieses Projekt abgeschlossen. Du kannst in LabEx weitere Labs absolvieren, um deine Fähigkeiten zu verbessern.



