Introduction
Dans ce projet, vous allez apprendre à créer un script qui peut vérifier si un programme est en cours d'exécution sur un port spécifié et afficher le chemin complet du programme ou "OK" si aucun programme n'est en cours d'exécution.
👀 Aperçu
## Exemple
$ cd /home/labex/project
$ sh get.sh 3000
/usr/lib/code-server/lib/node
$ sh get.sh 43000
OK
🎯 Tâches
Dans ce projet, vous allez apprendre :
- Comment créer un script Zsh
- Comment utiliser la commande
lsofpour vérifier si un port est utilisé - Comment utiliser la commande
pspour obtenir le chemin complet d'un programme en cours d'exécution
🏆 Réalisations
Après avoir terminé ce projet, vous serez capable de :
- Écrire un script qui peut identifier le programme en cours d'exécution sur un port spécifié
- Résoudre les problèmes liés aux conflits de ports dans votre environnement de développement
- Automatiser le processus de vérification des programmes en cours d'exécution sur des ports spécifiques
Créez le script get.sh
Dans cette étape, vous allez créer le script get.sh qui vérifiera si un programme est en cours d'exécution sur un port spécifié.
Ouvrez un éditeur de texte et créez un nouveau fichier nommé
get.shdans le répertoire/home/labex/project.Ajoutez le code suivant pour vérifier si un numéro de port est fourni en tant qu'argument :
## Vérifiez si le numéro de port est fourni en tant qu'argument if [ -z "$1" ]; then echo "Veuillez fournir un numéro de port." exit 1 fiCe code vérifie si le script a été appelé avec un numéro de port en tant qu'argument. Sinon, il affiche un message d'erreur et quitte le script.
Ajoutez le code suivant pour obtenir le numéro de port :
## Obtenez le numéro de port port=$1Ce code stocke le numéro de port fourni dans la variable
port.Enregistrez le fichier
get.sh.
Vérifiez si un programme est en cours d'exécution sur le port spécifié
Dans cette étape, vous allez ajouter le code pour vérifier si un programme est en cours d'exécution sur le port spécifié.
Ajoutez le code suivant au script
get.sh:## Vérifiez si le port est utilisé process=$(lsof -i :$port -sTCP:LISTEN -Fp | sed 's/^p//')Ce code utilise la commande
lsofpour vérifier si un processus est en écoute sur le port spécifié. La sortie est stockée dans la variableprocess.Ajoutez le code suivant pour vérifier si un programme est en cours d'exécution :
## Vérifiez si un programme est en cours d'exécution if [ -z "$process" ]; then echo "OK" else ## Obtenez le chemin complet du programme path=$(ps -p $process -o args=) echo "$path" | awk '{print $1}' fiCe code vérifie si la variable
processest vide (c'est-à-dire qu'aucun programme n'est en cours d'exécution sur le port spécifié). Si elle est vide, le script affiche "OK". Si un programme est en cours d'exécution, le script utilise la commandepspour obtenir le chemin complet du programme et l'affiche.Enregistrez le fichier
get.sh.
Testez le script get.sh
Dans cette étape, vous allez tester le script get.sh pour vous assurer qu'il fonctionne comme prévu.
Ouvrez un terminal et accédez au répertoire
/home/labex/project.Exécutez le script
get.shavec un numéro de port en tant qu'argument :$ sh get.sh 3000 /usr/lib/code-server/lib/nodeCela devrait afficher le chemin complet du programme en cours d'exécution sur le port 3000.
Exécutez le script
get.shavec un numéro de port qui n'est pas utilisé :$ sh get.sh 43000 OKCela devrait afficher "OK" car aucun programme n'est en cours d'exécution sur le port 43000.
Si le script fonctionne comme prévu, vous avez terminé le projet.
Félicitations! Vous avez créé un script qui peut vérifier si un programme est en cours d'exécution sur un port spécifié et afficher le chemin complet du programme ou "OK" si aucun programme n'est en cours d'exécution.
Résumé
Félicitations! Vous avez terminé ce projet. Vous pouvez pratiquer plus de laboratoires dans LabEx pour améliorer vos compétences.



