andryosribeiro
(usa Red Hat)
Enviado em 14/09/2022 - 10:16h
Olá pessoal,
Tenho um shell script que faz a coleta de vários dados do MySQL e leva para um log minuto a minuto.
Atualmente ele gera um arquivo a cada execução, mas minha intenção é que na coleta de 10 min ele gere apenas um arquivo.
Exemplo: execução 1 às 09h00 gerou o arquivo teste.log
execução 2 às 09h01 coletou os dados e levou ao mesmo arquivo teste.log
...
...
execução 11 às 09h11 gerou um novo arquivo teste2.log
Para vocês terem noção, o meu shell está assim:
# Variaveis --------------------------------------------------------------------------------------------------------------
SCRIPT_DIR=/root/bin/mymon
DATA=`date +%Y%m%d.%H%M`
LOG1=${SCRIPT_DIR}/result/act/mymon-$'{D A T A}'.out
LOG2=${SCRIPT_DIR}/result/conn/mymon-$'{D A T A}'.out
LOG3=${SCRIPT_DIR}/result/explain/mymon-$'{D A T A}'.out
LOG4=${SCRIPT_DIR}/result/lock/mymon-$'{D A T A}'.out
LOG5=${SCRIPT_DIR}/result/repl/mymon-$'{D A T A}'.out
LOG6=${SCRIPT_DIR}/result/toptbs/mymon-$'{D A T A}'.out
LOG7=${SCRIPT_DIR}/result/infobuffer/mymon-$'{D A T A}'.out
VER=$($sql -s -N -e "select left (version(), 3) from dual;" 2>/dev/null)
if [[ (( $VER > 5.5 )) ]]
then
echo "=================================================================" >> ${LOG4} 2>> ${LOG4}
echo "- Blocker" >> ${LOG4} 2>> ${LOG4}
echo "=================================================================" >> ${LOG4} 2>> ${LOG4}
$sql -t -e "SELECT
sp.user as blocker_user,
sp.host as blocker_host,
sp.db,
si.blocking_pid as blocker_id,
si.blocking_trx_started as blocker_started,
si.blocking_query as blocker_query,
p.command as blocker_command,
p.state as blocker_state,
sp.info as blocker_info
from sys.innodb_lock_waits as si
INNER JOIN information_schema.processlist as p
on p.id = si.blocking_pid
INNER JOIN information_schema.processlist as sp
on sp.id = si.blocking_pid;" >> ${LOG4} 2>> ${LOG4} 2>/dev/null
echo "=================================================================" >> ${LOG4} 2>> ${LOG4}
echo "- Blocked" >> ${LOG4} 2>> ${LOG4}
echo "=================================================================" >> ${LOG4} 2>> ${LOG4}
$sql -t -e "SELECT
p.user as blocked_user,
p.host as blocked_host,
p.db,
si.waiting_pid as blocked_id,
si.waiting_trx_started as blocked_started,
si.waiting_query as blocked_query,
p.command,
si.locked_table as blocked_db_table,
si.locked_index as blocked_index,
timestampdiff(SECOND, si.waiting_trx_started, sysdate()) as wait_seconds
from sys.innodb_lock_waits as si
INNER JOIN information_schema.processlist as p
on p.id = si.blocking_pid;" >> ${LOG4} 2>> ${LOG4} 2>/dev/null
Acima podemos ver que o resultado é encaminhado ao LOG4, mas gostaria que fosse gerado 1 arquivo apenas com a informação das 09h às 09h10 por exemplo. Alguém saberia me ajudar?