Introducción
En este proyecto, aprenderás a crear un script que pueda comprobar si un programa está en ejecución en un puerto específico y mostrar la ruta completa del programa o "OK" si no hay ningún programa en ejecución.
👀 Vista previa
## Ejemplo
$ cd /home/labex/project
$ sh get.sh 3000
/usr/lib/code-server/lib/node
$ sh get.sh 43000
OK
🎯 Tareas
En este proyecto, aprenderás:
- Cómo crear un script de Zsh
- Cómo utilizar el comando
lsofpara comprobar si un puerto está en uso - Cómo utilizar el comando
pspara obtener la ruta completa de un programa en ejecución
🏆 Logros
Después de completar este proyecto, podrás:
- Escribir un script que pueda identificar el programa en ejecución en un puerto específico
- Solucionar problemas relacionados con conflictos de puerto en tu entorno de desarrollo
- Automatizar el proceso de comprobación de programas en ejecución en puertos específicos
Crear el script get.sh
En este paso, crearás el script get.sh que comprobará si un programa está en ejecución en un puerto específico.
Abre un editor de texto y crea un nuevo archivo llamado
get.shen el directorio/home/labex/project.Agrega el siguiente código para comprobar si se proporciona un número de puerto como argumento:
## Comprueba si se proporciona un número de puerto como argumento if [ -z "$1" ]; then echo "Por favor, proporciona un número de puerto." exit 1 fiEste código comprueba si el script se llamó con un número de puerto como argumento. Si no es así, imprime un mensaje de error y sale del script.
Agrega el siguiente código para obtener el número de puerto:
## Obtiene el número de puerto port=$1Este código almacena el número de puerto proporcionado en la variable
port.Guarda el archivo
get.sh.
Verificar si un programa está en ejecución en el puerto especificado
En este paso, agregará el código para comprobar si un programa está en ejecución en el puerto especificado.
Agrega el siguiente código al script
get.sh:## Comprueba si el puerto está en uso process=$(lsof -i :$port -sTCP:LISTEN -Fp | sed 's/^p//')Este código utiliza el comando
lsofpara comprobar si un proceso está escuchando en el puerto especificado. La salida se almacena en la variableprocess.Agrega el siguiente código para comprobar si un programa está en ejecución:
## Comprueba si un programa está en ejecución if [ -z "$process" ]; then echo "OK" else ## Obtiene la ruta completa del programa path=$(ps -p $process -o args=) echo "$path" | awk '{print $1}' fiEste código comprueba si la variable
processestá vacía (es decir, no hay ningún programa en ejecución en el puerto especificado). Si está vacía, el script imprime "OK". Si un programa está en ejecución, el script utiliza el comandopspara obtener la ruta completa del programa e imprime la misma.Guarda el archivo
get.sh.
Probar el script get.sh
En este paso, probarás el script get.sh para asegurarte de que funcione como se espera.
Abre una terminal y navega hasta el directorio
/home/labex/project.Ejecuta el script
get.shcon un número de puerto como argumento:$ sh get.sh 3000 /usr/lib/code-server/lib/nodeEsto debería mostrar la ruta completa del programa que está en ejecución en el puerto 3000.
Ejecuta el script
get.shcon un número de puerto que no está en uso:$ sh get.sh 43000 OKEsto debería mostrar "OK" ya que no hay ningún programa en ejecución en el puerto 43000.
Si el script funciona como se espera, has completado el proyecto.
¡Felicitaciones! Has creado un script que puede comprobar si un programa está en ejecución en un puerto especificado y mostrar la ruta completa del programa o "OK" si no hay ningún programa en ejecución.
Resumen
¡Felicitaciones! Has completado este proyecto. Puedes practicar más laboratorios en LabEx para mejorar tus habilidades.



