Skip to content

Instantly share code, notes, and snippets.

@gdebenito
Last active June 9, 2019 07:37
Show Gist options
  • Save gdebenito/929356b429011b6f187ab866b6b0ff2f to your computer and use it in GitHub Desktop.
Save gdebenito/929356b429011b6f187ab866b6b0ff2f to your computer and use it in GitHub Desktop.
This script insert date in all files of a directory. This script is a test between sequentially and forking the process
#!/bin/bash
# inputDate.sh
# inserta fechas en todos los ficheros de un directorio
# variables
MAX_FILES=1000
DIRECTORY="files"
# generamos el directorio
if [ ! -d "$DIRECTORY" ]; then
mkdir $DIRECTORY
else
rm -rf $DIRECTORY
mkdir $DIRECTORY
fi
# generamos ficheros random
for (( c=1; c<=$MAX_FILES; c++ ))
do
touch $DIRECTORY/$RANDOM &
done
wait
# Esta función nos insertará una fecha en el archivo que se indique
function insertDate () {
# $1 es la entrada de la función; e.g.: insertDate('hola') --> $1='hola'
# insertamos la fecha
for i in {1..5}
do
date >> $1
done
# mostramos un punto para ver cuándo acaba la ejecución de esta función
# echo -n "."
}
function insertDateDirectoryFork () {
#$1 es el primer argumento cuando se llama el fichero. Es un directorio
for entry in "$1"/*
do
# el & hace que no se bloquee la ejecución
# cada función se ejecuta de forma concurrente, abriendo un fork para cada uno
# podemos ver qué procesos están corriendo con el comando "jobs"
# asíncrono, no espera. Sigue la ejecución
insertDate $entry &
# comando para probar el match
# echo "$entry"
done
echo "All jobs executed"
# esperamos que acaben todos los forks
wait
echo "All jobs finished"
}
function insertDateDirectorySequentially () {
for entry in "$1"/*
do
# síncrono, hasta que no se acabe el proceso, no empieza el siguiente
insertDate $entry
done
echo "Finished"
}
# llamamos a la función
echo "start forks"
time insertDateDirectoryFork $DIRECTORY
echo "start sequence"
time insertDateDirectorySequentially $DIRECTORY
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment