Script verifica se arquivo existe e executa tail -f [RESOLVIDO]

1. Script verifica se arquivo existe e executa tail -f [RESOLVIDO]

Loro
lorosp

(usa Red Hat)

Enviado em 19/04/2016 - 17:07h

Boa Tarde

Devo estar errando em alguma parte do script que fiz para monitorar um arquivo no Linux.
é um arquivo temporário gerado pelo BD e depois de criado ele é descarregado no Oracle de outro servidor
enquanto é processado, preciso monitorar o andamento deste arquivo.

segue o script:

#!/bin/bash
# Script monitora lista XX e YY.

FILE=lista.tmp

if [ -e /home/lista/$FILE ] ; then
echo "STATUS: MONITORANDO Lista XX e YY "
echo "***************************************************************"
tail -f /home/lista/$FILE
else
echo "STATUS: Arquivo ainda não gerado"
echo "***************************************************************"
fi

echo "STATUS: Finalizando Monitoramento"
echo "*****************************************************************"

Se algum colega puder me ajudar, agradeço desde já.

Loro SP


  


2. MELHOR RESPOSTA

Walker Luiz de Freitas
WalkerPR

(usa Deepin)

Enviado em 19/04/2016 - 17:34h

Olá!

Testei o script em meu computador e este executou. O único ajuste foi o caminho. Verifique se o seu caminho está correto, ou seja, se existe /home/lista/ e se o arquivo lista.tmp está lá.

#!/bin/bash
# Script monitora lista XX e YY.

FILE=lista.tmp

if [ -e /home/walker/$FILE ] ; then
echo "STATUS: MONITORANDO Lista XX e YY "
echo "***************************************************************"
tail -f /home/walker/$FILE
else
echo "STATUS: Arquivo ainda não gerado"
echo "***************************************************************"
fi

echo "STATUS: Finalizando Monitoramento"
echo "***************************************************************"



3. Re: Script verifica se arquivo existe e executa tail -f [RESOLVIDO]

thinomar
thinomar

(usa Linux Mint)

Enviado em 19/04/2016 - 17:32h

O que está dando errado? O tail não está imprimindo o que deveria ou o script não está entrando no IF?
--
-I've been talking to the main computer
-And...?
-It hates me


4. Re: Script verifica se arquivo existe e executa tail -f

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 19/04/2016 - 20:46h

lorosp escreveu:

Boa Tarde

Devo estar errando em alguma parte do script que fiz para monitorar um arquivo no Linux.
é um arquivo temporário gerado pelo BD e depois de criado ele é descarregado no Oracle de outro servidor
enquanto é processado, preciso monitorar o andamento deste arquivo.

segue o script:

#!/bin/bash
# Script monitora lista XX e YY.

FILE=lista.tmp

if [ -e /home/lista/$FILE ] ; then
echo "STATUS: MONITORANDO Lista XX e YY "
echo "***************************************************************"
tail -f /home/lista/$FILE
else
echo "STATUS: Arquivo ainda não gerado"
echo "***************************************************************"
fi

echo "STATUS: Finalizando Monitoramento"
echo "*****************************************************************"

Se algum colega puder me ajudar, agradeço desde já.
Loro SP

Boa noite Loro.
Fiz uns testes aqui, ele executa o comando "tail -f", e fica monitorando o aquivo indefinidamente....
Esse INDEFINIDAMENTE, não é um erro do seu script, parece uma característica do "tail -f".
Bom, montei um scriptzinho, ele monitora o Nº da ultima linha, com um intervalo de 0.5s,.
Testei e funciona....
OBS.:
Para monitorar pelo TAMANHO DO arquivo, altere a atribuição das vars, NR01 e NR02, com o seguinte:
ls -l $FILE |awk -F" " '{print $5}' 


Segue:

#!/bin/bash
## MONITORA CRIAÇÃO DE ARQUIVO BASEADO EM TEXTO ##
## Marcelo Oliver ## Abril/2016 ##

FILE=saida.txt
COLS=$(tput cols)

VERIFICA() {
if [ -e "$FILE" ];then
LinHzt
printf " %()T"
echo -e "\n ARQUIVO $FILE EXISTE,\n INICIANDO O MONITORAMENTO.\n"
LinHzt
PEGAULTIMA
else
LinHzt
printf " %()T"
echo -e "\n ARQUIVO $FILE NÃO EXISTE.\n"
LinHzt
fi
}

PEGAULTIMA() {
NR01=$(awk -F"\n" 'END {print NR}' $FILE)
sleep 0.5
NR02=$(awk -F"\n" 'END {print NR}' $FILE)
COMPARA
}

COMPARA(){
if (($NR02==$NR01));then
LinHzt
printf " %()T"
echo -e "\n CRIAÇÃO de $FILE TERMINOU.\n"
LinHzt
else
LinHzt
printf " %()T"
echo -e "\n GERANDO $FILE . . . \n"
LinHzt
sleep 0.5
PEGAULTIMA
fi
}

LinHzt() { printf '%*s' "$((COLS/3))" '' | sed "s/ /*/g" ;echo; }

VERIFICA
##TERMINA NA LINHA ACIMA.##

----------------------------------------------------------------------------------------
Se a resposta lhe ajudou, marque-a como a MELHOR, dessa forma, ganho uns pontos,
o que incentiva a continuar colaborando, ajudando, participando e compartilhando conhecimentos . . . :)
----------------------------------------------------------------------------------------
Abç.:
Marcelo Oliver




5. Funcionou em partes

Loro
lorosp

(usa Red Hat)

Enviado em 20/04/2016 - 10:50h

Bom Dia Pessoal

Ajustando o caminho como o colega WalkerPR recomendou deu certo.

msoliver, sim, o tail fica infinito pois ao atingir a ultima linha do arquivo, independente do tamanho ele para ali mesmo,
o ideal seria executar o tail e ao atingir a última linha ele fechar o monitoramento.

Não tem como testar no servidor de produção aqui, mas vou criar um ambiente de teste para verificar isso.

cada linha gerada no arquivo corresponde a um código de produto de 20 dígitos, por essa razão monitoramos as entradas,
há situações onde identificamos produtos não autorizados entrando em certos servidores.

Agradeço a todos pela ajuda.

Muito Obrigado

Agora é partir para outra etapa do monitoramento que será mostrado em uma tela de supervisão.

Grande abraço a todos

Lorosp






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts