Skip to main content

Executando e acompanhando tarefas demoradas na linha de comando do MySQL

Primeiro, precisamos do comando sql que será executado.

Execute o comando no seu programa preferido (Workbench, direto na linha de comando, etc) e finalize o programa.

Execute o comando abaixo para ver o status do comando (oi?)

mysql -v -h ipdobanco -u login -psenha nomedabase -e "show processlist;"

O retorno será de pelo menos 2 linhas, uma detalhando o próprio comando SHOW PROCESSLIST, e outra com o comando que foi executado antes:

-------------- show processlist -------------- +----------+--------+-----------------------+--------+---------+------+----------+------------------------------------------+-----------+---------------+ | Id | User | Host | db | Command | Time | State | Info | Rows_sent | Rows_examined | +----------+--------+-----------------------+--------+---------+------+----------+------------------------------------------+-----------+---------------+ | 19241044 | login | 127.0.0.1:39922 | nomedabase | Query | 529 | updating | delete from tabela | 0 | 416450 | | 19258640 |login |127.0.0.1:54285 |nomedabase | Query | 0 | init | show processlist | 0 | 0 | +----------+--------+-----------------------+--------+---------+------+----------+------------------------------------------+-----------+---------------+

Agora, precisamos executar esse comando de tempos em tempos, para verificarmos quando finalizou.

while sleep 60; do COMANDO; done

O exemplo acima fica assim:

while sleep 60; do mysql -v -h ipdobanco -u login -psenha nomedabase -e "show processlist;"; done

O 60 significa que o comando será executado a cada 60 segundos. Basta alterar pra executar numa frequência diferente.