Geekflare recibe el apoyo de nuestra audiencia. Podemos ganar comisiones de afiliación de los enlaces de compra en este sitio.
En Linux Última actualización: 24 de septiembre de 2023
Compartir en:
Escáner de seguridad de aplicaciones web Invicti - la única solución que ofrece verificación automática de vulnerabilidades con Proof-Based Scanning™.

Ha llegado al lugar adecuado si desea aprender a ejecutar comandos de Linux cuando cambie cualquier archivo de un directorio de trabajo y cuando se creen archivos nuevos.

En Linux, puede utilizar cron para programar comandos que se ejecuten a determinadas horas.

Pero, ¿y si necesita que los comandos se ejecuten cada vez que se modifique un archivo o se añada un nuevo archivo a un directorio?

Eso también es fácilmente realizable, y existen algunas herramientas de línea de comandos para llevarlo a cabo.

Empecemos

watchexec

watchexec es una herramienta práctica e independiente que monitoriza un directorio de trabajo dado y ejecuta un comando si detecta algún cambio como la actualización de un archivo o la creación de uno nuevo.

Características

  • No requiere una línea de comandos compleja que incluya xargs (argumentos extendidos).
  • Comprueba los cambios en el directorio actual y en todos los subdirectorios en tiempo real.
  • No necesita un tiempo de ejecución de lenguaje y no está conectado a ningún lenguaje o ecosistema específico.
  • .gitignore y .ignore se utilizan por defecto para decidir para qué archivos ignorar las notificaciones.
  • Los grupos de procesos se utilizan para realizar un seguimiento de los programas que se bifurcan.
  • Se admite la vigilancia de archivos con una extensión determinada.
  • Es compatible con OS X, Linux y Windows.
  • Es posible filtrar e ignorar eventos basados en glob (patrones de búsqueda de archivos para encontrar nombres de archivos parcialmente idénticos.

Instalación de watchexec

Para instalar fácilmente la herramienta watchexec, pegue el siguiente enlace en el terminal o en un intérprete de comandos y pulse intro.

Linux y macOS

curl -sS https://webinstall.dev/watchexec | bash

Tras la instalación con éxito, la ruta aparecerá en la pantalla. En mi caso, esta herramienta se instaló en /root/.local/bin

┌──(root💀kali)-[~]
└─# curl -sS https://webinstall.dev/watchexec | bash

Gracias por utilizar webi para instalar 'watchexec@stable' en 'Linux/x86_64'.
¿Tiene algún problema? ¿Ha experimentado un error? Por favor, háganoslo saber:
 https://github.com/webinstall/webi-installers/issues

¿Le gusta? Denos las gracias con una estrella en GitHub:
 https://github.com/webinstall/webi-installers

Encontrado /root/Downloads/webi/watchexec/cli-v1.18.9/watchexec-1.18.9-x86_64-unknown-linux-musl.tar.xz
Extrayendo /root/Downloads/webi/watchexec/cli-v1.18.9/watchexec-1.18.9-x86_64-unknown-linux-musl.tar.xz
Instalando en /root/.local/opt/watchexec-vcli-v1.18.9/bin/watchexec
Instalado 'watchexec vcli-v1.18.9' como /root/.local/bin/watchexec

Y después de la instalación, navegue hasta el repositorio .local /bin y compruebe si el archivo está allí o no utilizando estos comandos.

cd .local/bin

ls

El siguiente paso es exportar la ruta para utilizar la herramienta watchexec.

export PATH="/root/.local/bin:$PATH"

Para ejecutarlo, sólo tiene que escribir watchexec en el terminal como usuario root. Utilice este comando para ver qué banderas y opciones pueden utilizarse con la herramienta watchexec.

watchexec --help

Ejemplos de comandos

  • Llame a ls -la cuando cambie cualquier archivo en este directorio/subdirectorio. Este comando muestra todos los archivos presentes en el directorio cada vez que detecta alguna modificación.
watchexec -- ls -la
  • Ejecute el comando cada vez que cambie alguno de los archivos de extensión python, js, CSS o Html en el directorio actual. Aquí puede pasar cualquier comando que desee. Las extensiones de archivo deben estar separadas por una coma.
 watchexec --exts py,js,css,html <comando&gt
  • Ejecuta el comando cuando cualquier archivo en lib o src cambia. la opción “-w” vigila un archivo o directorio específico del sistema.
watchexec -w lib -w src <comando&gt
  • Llama/reinicia cualquier servicio cuando cambia cualquier archivo en el directorio actual (y todos los subdirectorios).
watchexec -e html -r tor

watchexec -e js,py -r mysql

Aquí, la opción “-r” reinicia el proceso o servicio si se está ejecutando en el sistema.

Para más ejemplos de uso de watchexec, puede visitar el repositorio oficial de GitHub.

entr

entr es una sencilla y excelente utilidad de línea de comandos para ejecutar comandos arbitrarios cuando se produce alguna modificación en un directorio determinado.

entr” son las siglas de Event Notify Test Runner. Esta herramienta fue creada con el objetivo de realizar una rápida retroalimentación y pruebas automatizadas.

Instalación

entr viene preinstalado en la distribución Linux. En caso de que falte, deberá instalarlo manualmente.

Esta herramienta es fácil de usar y se puede instalar con el siguiente comando.

sudo apt-get install entr

O también puede instalarla clonando el repositorio Git oficial.

git clone https://github.com/eradman/entr.git

A continuación, navegue hasta ese directorio e instale los requisitos utilizando los siguientes comandos.

./configure
make test
make install

Para ver las opciones de compilación disponibles ejecute ./configure -h

Ejemplo de comandos

Para ver las opciones y argumentos disponibles para el comando entr. Utilice el siguiente comando.

man entr

Este comando muestra el manual de usuario del comando entr.

NOMBRE
 entr - ejecuta comandos arbitrarios cuando los archivos cambian

SINOPSIS
 entr [-acdnprsz] utilidad [argumento /_ ...]

DESCRIPCIÓN
 Se proporciona una lista de archivos en la entrada estándar, y la utilidad se ejecuta utilizando los argumentos suministrados
 si alguno de ellos cambia. entr espera a que el proceso hijo termine antes de responder a eventos posteriores del sistema de archivos
.  También se abre un TTY antes de entrar en el bucle de vigilancia con el fin de soportar utilidades interac-
 tivas.

    Los argumentos son los siguientes

    -a Responder a todos los eventos que se produzcan mientras se ejecuta la utilidad.  Sin esta opción, entr
 consolida los eventos para evitar el bucle.  Esta opción no tiene efecto en conjunción con
 la bandera -r.

    -c Borra la pantalla antes de invocar la utilidad especificada en la línea de comandos.  Especifíquelo dos veces para
 borrar el búfer de retroceso.

    -d Rastrea los directorios de los archivos regulares proporcionados como entrada y sale si se añade un nuevo archivo.
            Esta opción también permite especificar explícitamente los directorios.  Si se especifica dos veces, se reconocen todas las nuevas
 entradas a un directorio, de lo contrario se ig-
 noran los archivos cuyos nombres comiencen por '.'.

    -n Ejecutar en modo no interactivo.  En este modo entr no intenta leer del TTY ni
 cambiar sus propiedades.

    -p Posponer la primera ejecución de la utilidad hasta que se modifique un archivo.

 Página del manual entr(1) línea 1 (pulse h para obtener ayuda o q para salir)
  • Para lanzar y auto-recargar un servidor MySQL cuando cualquier archivo JavaScript cambia en el directorio de trabajo. Cada vez que se guardan los cambios en el archivo, entr recarga el servidor MySQL.
 ls *.js | entr -r mysql
  • Para recargar automáticamente un servidor web o terminar si el servidor sale.
$ ls * | entr -rz ./httpd

Para más detalles y ejemplos sobre el comando entr, puede visitar su repositorio oficial en GitHub.

Palabras finales 👩‍💻

Espero que haya encontrado este artículo muy útil para aprender a ejecutar comandos Linux cuando cualquier archivo en un directorio dado cambia y cuando se crean nuevos archivos.

También puede interesarle aprender cómo eliminar archivos y directorios en Linux.

  • Ashlin Jenifa
    Autor
Gracias a nuestros patrocinadores
Más lecturas sobre Linux
Potencia tu negocio
Algunas de las herramientas y servicios que le ayudarán a hacer crecer su negocio.
  • Invicti utiliza el Proof-Based Scanning™ para verificar automáticamente las vulnerabilidades identificadas y generar resultados procesables en tan solo unas horas.
    Pruebe Invicti
  • Web scraping, proxy residencial, gestor de proxy, desbloqueador web, rastreador de motores de búsqueda, y todo lo que necesita para recopilar datos web.
    Pruebe Brightdata
  • Monday.com es un sistema operativo de trabajo todo en uno que te ayuda a gestionar proyectos, tareas, trabajo, ventas, CRM, operaciones, flujos de trabajo y mucho más.
    Prueba Monday
  • Intruder es un escáner de vulnerabilidades en línea que encuentra puntos débiles de ciberseguridad en su infraestructura, para evitar costosas violaciones de datos.
    Prueba Intruder