Para quién le sirva, os dejo este script en bash para reiniciar el rig minero cuando alguna o todas las GPU fallán o rinden menos megahashes (Mhs) de lo que deben… Espero que os sirva.
Lo podéis poner en un crontab para que se ejecute cada diez minutos y listo… Continuar leyendo «Script para reiniciar EthosDistro cuando cualquier GPU falla»
Script al estilo Top para MySQL
Aunque hay herramientas enfocadas para el seguimiento procesos en MySQL, algunas de pago, otras gratis, pues para mi es mas fácil crear un pequeño script en bash que las mostrara estilo «top».
#!/bin/bash for i in `seq 1 100000`; do tput clear date echo "____________________________________________________________________________________" mysqladmin -uUSUARIO --port=3306 --host=localhost -pPASSWORD processlist | awk '{ if ($12 > 0) print $0}' | grep -v binlog | cut -d \| -f2,5,6,7,8,9 echo " " uptime mysqladmin -uUSUARIO --port=3306 --host=localhost -pPASSWORD processlist | wc -l sleep 5 done
Rapido y sencillo, suficiente para ver los queries que se quedan atascados en MySQL.
Scripts en Bash: Backup Incremental y Full backup
Requisito para una urgencia en una empresa fue crear de urgencia unos full backups y un backup incremental diario de un repositorio. Como siempre estos requerimientos se requieren para ayer y son para salvar cabezas cuando las papas queman.
Debido al gran volumen de datos, como estrategia de backups se decidió realizar un Full backup mensual y un backup incremental diario.
A tal fin, se escribieron dos scripts, el primero de ellos, que dado un directorio crea un archivo tar comprimido del mismo. Y el segundo, el que se ejecuta diariamente, que se encarga de verificar la fecha de modificación del último backup full del directorio y a partir de la misma crea un tar comprimido con los cambios desde entonces.
Nada de otro mundo, dos scripts en bash sencillos, pero que se dejan a vuestra disposición por si las moscas.
Backup incremental:
#!/bin/sh TAR=$(which tar) TEE=$(which tee) ARGS=2 if [ $# -ne $ARGS ] then echo “Usage: “$0” file dir” echo ” file: backup file name” echo ” dir: path to backup” exit fi APP=$0 #app name FILE=$1“_incremental.tgz” #backup file FILE_FULL=$1“_full.tgz” #backup full FILE_OLD=$FILE“~” #file backuped before remove DIR=$2 #path LOG_DIR=/var/log LOG_FILE=$LOG_DIR“/”${APP##*\/}“.log” #remuevo de APP lo que este antes de la ultima / TODAY=`date “+%Y-%m-%d %a”` echo $TODAY” *** Backup incremental ***” | $TEE -a $LOG_FILE if [ ! -d $DIR ] then echo “ERROR: path “$DIR” not exist” | $TEE -a $LOG_FILE exit fi # Reviso si existe el backup full if [ ! -f $FILE_FULL ]; then echo “ERROR: full backup “$FILE_FULL” not exist!” | $TEE -a $LOG_FILE exit fi #Realizo backup del backup echo “Rotating files…” | $TEE $LOG_FILE if [ -f $FILE ]; then #cp -v $FILE $FILE_OLD | $TEE $LOG_FILE rm -v $FILE | $TEE $LOG_FILE fi #Realizo el backup DATE_FULL=“`date \”+%Y-%m-%d %H:%M\” -r “$FILE_FULL“`” echo “Full backupe created: “$DATE_FULL | $TEE $LOG_FILE echo “Making backup…” | $TEE $LOG_FILE $TAR -chzf $FILE –newer-mtime=“$DATE_FULL” $DIR | $TEE -a $LOG_FILE if [ $? == 0 ] then echo “Backup successfull!” else echo “ERROR: error making backup <img alt=":-(" src="http://luauf.com/wp-includes/images/smilies/icon_sad.gif" /> “ fi
Full backup:
#!/bin/bash TAR=$(which tar) TEE=$(which tee) ARGS=2 if [ $# -ne $ARGS ] then echo “Usage: “$0” file dir” echo ” file: backup file name” echo ” dir: path to backup” exit fi APP=$0 #app name FILE=$1“_full.tgz” #backup file FILE_OLD=$FILE“~” #file backuped before remove DIR=$2 #path LOG_DIR=/var/log LOG_FILE=$LOG_DIR“/”${APP##*\/}“.log” #remuevo de APP lo que este antes de la ultima / TODAY=`date “+%Y-%m-%d %a”` echo $TODAY” *** Backup full *** “ | $TEE -a $LOG_FILE if [ ! -d $DIR ] then echo “ERROR: path “$DIR” not exist” | $TEE -a $LOG_FILE exit fi #Realizo backup del backup echo “Rotating files…” | $TEE -a $LOG_FILE if [ -f $FILE ]; then #cp -v $FILE $FILE_OLD | $TEE -a $LOG_FILE rm -v $FILE | $TEE -a $LOG_FILE fi echo “Making backup…” | $TEE -a $LOG_FILE #Realizo el backup $TAR -chzf $FILE $DIR | $TEE -a $LOG_FILE if [ $? == 0 ] then echo “Backup successfull!” else echo “ERROR: error making backup <img alt=":-(" src="http://luauf.com/wp-includes/images/smilies/icon_sad.gif" /> “ fi
Script para optimizar tablas InnoDB en MySQL
Cuando utilizamos MySQL es común optimizar tablas con muchos registros con cierta periodicidad, esto para solventar problemas de fragmentación, entre otros. La verdad esta es una de las cosas del modelo de PostgreSQL que echo en falta, quizás no es tan «amigable» pero todo queda claro desde el inicio.
En PostgreSQL hay un proceso de aspiradora (vacuum) que va eliminando periódicamente registros inutilizados en tablas, su configuración, pan nuestro de cada día para un admin de BBDD que debe ajustarlo con frecuencia.
Bueno…. Volviendo a MySQL, si necesita optimizar tablas InnoDB, lo mejor que puede utilizar son ALTER nulos, estas son instrucciones DDL de tipo ALTER sin parámetros que permiten seguir trabajando con las BBDD, porque realiza copias temporales en disco. La cuestión es que esta herramienta «reconstruye» la tabla y elimina, entre otros, los problemas de fragmentación.
Aquí les dejo un script para optimizar de «un sólo golpe» varias tablas InnoDB:
#!/bin/bash if [ $# -lt 2 ]; then echo "You must specify database host" echo "Eg. script.sh MY_DATABSE 192.168.10.1" exit fi db="$1" host="$2" user="root" declare -a tables=(Table1 Table2 Table3) stty -echo read -p "Enter MySQL's Admin password: " password stty echo for table in ${tables[@]}; do echo $table && time mysql -u $user --password=$password -h $host $db -e "ALTER TABLE $table ENGINE=INNODB" done
Básicamente optimizamos las tablas especificadas (en un arreglo) e imprimimos el tiempo que toma cada instrucción (time).
Si tiene la certeza de que todas las tablas de una BD son InnoDB y quiere optimizarlas todas aún más rápido, puede hacerlo valiéndose del comando «show tables»…
#!/bin/bash if [ $# -lt 2 ]; then echo "You must specify database host" echo "Eg. script.sh MY_DATABSE 192.168.10.1" exit fi db="$1" host="$2" user="root" stty -echo read -p "Enter MySQL's Admin password: " password stty echo mysql -u $user --password=$password -h $host --batch --skip-column-names $db -e "SHOW TABLES" | while read table; do echo $table && time mysql -u $user --password=$password -h $host $db -e "ALTER TABLE $table ENGINE=INNODB" done
La única diferencia es que las tablas ya no son especificadas a través de un arreglo (que recomiendo para BBDD grandes, donde optimizar todas las tablas podría demorar toda la vida), sino que se toman directamente del comando «SHOW TABLES» para una BD especificada.
Script para descargar videos flash en linux sin /tmp
Como todos sabemos la nueva versión de adobe flash plugin ya no deja los videos en la carpeta /tmp de linux, así que ese método ya no sirve para tal propósito. Por eso he creado un sencillo script para compartir aquí en mi blog, el cual explicaré como funciona de manera rápida y simple. Recuerda que si no te funciona bien o te gustaría ampliarlo lo puedes hacer de manera libre.
Continuar leyendo «Script para descargar videos flash en linux sin /tmp»