Last active
June 9, 2019 07:37
-
-
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
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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