echo" BANCO CENTRAL DE CHILE $fecha Valores ==> EURO=$euro UTM=$utm DOLAR=$dolar UF=$uf"
echo""
exit
Le doy permisos de ejecución al Script : chmod u+x valores.sh Luego al ejecutarlo obtengo el siguiente resultado : (puedo trabajar con los valores por separado)
Shell
1
2
3
[desa@monster]$./valores_bcentral.sh
BANCO CENTRAL DE CHILE05-08-2025Valores==>EURO=1.115,81UTM=68.647DOLAR=964,28UF=39.153,69
En la administración de sistemas y el desarrollo de software, a menudo se necesita medir el tiempo para evaluar el rendimiento de una tarea o un programa. Aunque el tiempo se mide en segundos, puede ser difícil de interpretar si el valor es muy grande. Para facilitar su lectura, es útil convertir los segundos a un formato más convencional, como hora:minuto:segundo (HH:MM:SS).
Aquí hay cinco razones por las que sería una buena idea medir el tiempo de los scripts:
Optimización del rendimiento: Al medir el tiempo de ejecución de los scripts, puedes identificar los cuellos de botella y áreas de mejora en tu código. Esto te permite optimizar el rendimiento y reducir el tiempo de ejecución, lo que es especialmente importante en aplicaciones de tiempo crítico o de alto rendimiento.
Comparación de soluciones: A menudo, hay varias formas de abordar un problema en la programación. Al medir el tiempo de ejecución de diferentes soluciones, puedes comparar su eficiencia y elegir la mejor opción en términos de velocidad y rendimiento.
Monitoreo del rendimiento a lo largo del tiempo: Medir el tiempo de ejecución de los scripts de manera regular te permite llevar un registro del rendimiento a lo largo del tiempo. Esto puede ser útil para detectar degradaciones en el rendimiento a medida que se introducen cambios en el código o en el entorno de ejecución, permitiendo así solucionar problemas antes de que se vuelvan críticos.
Establecer expectativas realistas: Al conocer el tiempo de ejecución de tus scripts, puedes establecer expectativas realistas para los usuarios finales y otros miembros del equipo en cuanto a cuánto tiempo tomará completar ciertas tareas. Esto también puede ayudar en la planificación de recursos y en la evaluación de la viabilidad de ciertas características o soluciones.
Identificación de problemas de escalabilidad: Cuando un script se ejecuta con diferentes tamaños de entrada o en diferentes entornos o simplemente la carga de trabajo aumento con el tiempo, el tiempo de ejecución puede variar significativamente. Medir el tiempo de ejecución en estas situaciones te ayuda a identificar problemas de escalabilidad y a tomar decisiones informadas sobre cómo manejar la carga de trabajo y la distribución de recursos en función de la demanda y el rendimiento esperados.
Para calcular el tiempo de ejecución de un script Bash, puedes usar el comando time antes de ejecutar el script. Este comando mostrará el tiempo real, el tiempo de usuario y el tiempo del sistema empleado en la ejecución.
Shell
1
2
3
4
5
time./ejecutime.sh
real6m18.009s
user0m0.005s
sys0m0.003s
O ejecutar el siguiente SCRIPT :
Shell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/bin/bash
hora_ini=`date+"%T"`
## Aquí ejecutas el script que deseas calcular el tiempo de ejecución
sleep378
## Lo mismo lo puedes hacer lanzado un script.....
hora_fin=`date+"%T"`
segu_ini=$(date-d"$hora_ini"+%s)
segu_fin=$(date-d"$hora_fin"+%s)
hora_dif=$((segu_fin-segu_ini))
hora_tra=$(date-d@$hora_dif-u+%H:%M:%S)
hora_num=$((hora_dif/3600))
minu_num=$(((hora_dif%3600)/60))
segu_num=$((hora_dif%60))
echo"HORA INICIO : $hora_ini"
echo"HORA TERMINO : $hora_fin"
echo"TIEMPO EJECUCION : $hora_tra"
echo""
echo"EL PROCESO DEMORO $hora_num HRS CON $minu_num MINS Y $segu_num SEGS EN EJECUTARSE."
exit
Al ejecutarlo, mostraría el siguiente resultado :
Shell
1
2
3
4
5
HORA INICIO:20:40:32
HORA TERMINO:20:46:50
TIEMPO EJECUCION:00:06:18
EL PROCESO DEMORO0HRS CON6MINSY18SEGS EN EJECUTARSE.
Este ejemplo cambiará al directorio /var/log, contará la cantidad de líneas que contienen “error” en el archivo syslog y mostrará las últimas 5 líneas del archivo syslog.
Este ejemplo cambiará al directorio /var/log, creará un archivo comprimido de syslog como syslog.gz y eliminará el archivo syslog original solo si los comandos anteriores tuvieron éxito.
3.- Usar comandos separados por un solo ampersand :
Este ejemplo buscará todos los archivos .txt en el directorio raíz y guardará los resultados en archivos.txt, esperará 5 segundos e imprimirá “¡Terminado!”, todo en paralelo.
Este ejemplo ejecutará dos grupos de comandos en paralelo: el primer grupo cambiará al directorio /var/log y guardará todas las líneas que contienen “error” del archivo syslog en errores.log, y el segundo grupo cambiará al directorio /var/tmp y mostrará el uso del disco para cada elemento.
Este ejemplo cambiará al directorio /var/log, contará la cantidad de líneas que contienen “error” en el archivo syslog y mostrará las últimas 5 líneas del archivo syslog, todo dentro de una subcapa (Ejecutar una subcapa (subshell) en Bash ofrece varias ventajas, incluyendo la capacidad de modificar el entorno de forma temporal, ejecutar comandos en paralelo y aislar procesos. Las subcapas permiten crear entornos de ejecución independientes dentro de los scripts, lo que facilita la gestión de procesos y la ejecución de comandos sin afectar el entorno principal).
Para ejecutar un script local en el servidor remoto, se ejecuta de esta forma..
Shell
1
ssh user@host'bash -s'<script_local.sh
7.- Usar un Here Document :
Este ejemplo cambiará al directorio /var/log, contará la cantidad de líneas que contienen “error” en el archivo syslog y mostrará las últimas 5 líneas del archivo syslog en el host remoto.
En los scripts bash , se deben utilizar diferentes métodos para detectar y manejar los posibles errores que pudiesen ocurrir durante la ejecución de nuestros scripts bash.
1.- En Bash, cada ejecución de un comando devuelve un Código de salida al finalizar su ejecución. Un código 0 (cero) indica que el comando se ejecuto en forma correcta. Cualquier código diferente, indica que ocurrió algún error en su ejecución. –
Shell
1
2
3
4
5
6
#!/bin/bash
mkdir/prueba/test01
if[$?-ne0];then
echo"Error: Falló al crear el directorio."
exit1
fi
2.- Dentro de un scripts bash, el comando “set -e” le indica que salga inmediatamente (detenga la ejecución) si es que encuentra un código de salida diferente a 0 (cero).- Con esto nos evitamos verificar el estado de salida de cada comando ejecutado, dentro del script :
Shell
1
2
3
4
#!/bin/bash
set-e
mkdir/prueba/test01
echo"Directorio creado exitosamente."
3.- Mediante el comando TRAP, el cual sirve para interceptar señales y errores. Se puede especificar TRAP para ejecutar comandos específicos. En el siguiente ejemplo, TRAP captura cualquier error (señalizado por la palabra clave ERR) y ejecuta el código de manejo de errores especificado.
Este scripts BASH lee un archivo de LOG y contabiliza las direcciones IP encontradas. Al final muestra un resumen con el total de apariciones de cada Dirección IP encontrada en el archivo de LOG :
Shell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#!/bin/bash
# Nombre del archivo de registro
logfile="archivo.log"
# Array asociativo para almacenar las direcciones IP y sus conteos
ip_counts=([]="0")
# Leer el archivo de registro línea por línea
whileIFS=read-rline;
do
# Buscar direcciones IP en cada línea usando expresiones regulares
# Incrementar el conteo para la dirección IP encontrada
ip_counts[$ip]=$((ip_counts[$ip]+1))
fi
done<"$logfile"
# Imprimir el resumen de las direcciones IP y sus conteos
echo"Resumen de direcciones IP:"
echo"--------------------"
forip in"${!ip_counts[@]}";do
echo"$ip: ${ip_counts[$ip]}"
done
Explicación del script:
#!/bin/bash: Línea shebang que especifica que el script debe ejecutarse con bash.
logfile="archivo.log": Variable que contiene el nombre del archivo de registro. Cambia «archivo.log» por el nombre de tu archivo.
ip_counts=([ ]="0"): Inicializa un array asociativo llamado ip_counts. La clave es la dirección IP y el valor es el conteo (inicializado en 0).
while IFS= read -r line: Bucle que lee el archivo de registro línea por línea.
if [[ $line =~ ([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}) ]]: Expresión regular que busca direcciones IP en cada línea. Ajusta la expresión regular si tus direcciones IP tienen un formato diferente.
ip=${BASH_REMATCH[1]}: Asigna la dirección IP encontrada a la variable ip.
ip_counts[$ip]=$((ip_counts[$ip]+1)): Incrementa el conteo para la dirección IP en el array asociativo.
for ip in "${!ip_counts[@]}": Bucle que itera sobre las claves del array asociativo (las direcciones IP).
echo "$ip: ${ip_counts[$ip]}": Imprime la dirección IP y su conteo.
Este sitio existe gracias a personas como tú Cada línea de código, cada artículo, cada script compartido aquí lleva horas de dedicación. Si alguna vez esta página te ayudó a resolver un problema, aprender algo nuevo o simplemente te hizo sentir acompañado en tu camino con Linux/Unix… Considera hacer una donación. Tu apoyo no solo mantiene vivo este proyecto, también me da fuerzas para seguir creando. No importa el monto. Lo que importa es el gesto.
Gracias por estar aquí. Gracias por creer en el conocimiento libre.-