Matar processo em shell script

1. Matar processo em shell script

leonardo
leo_jf

(usa Outra)

Enviado em 25/09/2012 - 14:00h

boa tarde pessoall,
sou iniciante em shell script e gostaria de uma ajuda de vocês, por favor.
Tenho um shell diário que transfere arquivos *.txt de uma máquina windows para uma máquina unix.
Não descobrimos ainda, mas alguns dias a máquina unix gera erro e não conseguimos realizar a transferencia.

O comando fica "preso" na seguinte tela:
150 Opening ASCII mode data connection for 120924_VALORES.TXT(4674 bytes).

O que gostaria seria que antes de iniciar o processso houvesse um time de x segundos e que se fosse atingido esse tempo o processo finalizasse.
Pelo que pesquisei o sleep faria isso, mas acho que não estou sabendo usar o comando pois não funciona.
Alguém poderia me ajudar?

O tempo medio de execução, quando há sucesso, é de 12 minutos.

Muito obrigado.



  


2. Re: Matar processo em shell script

Daniel Lara Souza
danniel-lara

(usa Fedora)

Enviado em 25/09/2012 - 16:59h

tem como postar a o sei script ?
como ele realiza ? ele monta uma unidade de rede para efetuar a cópia ?


3. Re: Matar processo em shell script

Perfil removido
removido

(usa Nenhuma)

Enviado em 25/09/2012 - 17:22h

Pelo código de erro 150.. vejo que tem um servidor FTP no meio, certo? Verifique o firewall se as portas estão devidamente abertas para receber essa conexão.

você pode debugar seu script executando com

# coloque isso no inicio do script antes de executá-lo MANUALMENTE PARA TESTES....
# turn on debug mode
set -x


# turn off

set +x




4. Re: Matar processo em shell script

leonardo
leo_jf

(usa Outra)

Enviado em 25/09/2012 - 17:59h

Fala Daniel, blz?

o script é meia duzia de linhas, pois somente pega os arquivos de uma maquina windows e transfere para uma maquina unix. após isso existe outro script que irá tratar os arquivos e carregar no oracle.

tirando o inicio que é declaração de váriaveis o script é isso:

if [ $? -eq 0 ]
then
ftp -inv < $dir_s/transfere.dat

if [ $? -gt 0 ]
then
echo " Erro na execucao do ftp transfere.dat "
exit 3
fi

else
echo " A maquina nao esta respondendo!! "
mailx -s ....
exit 4
fi

Nada mais. O que gostaria é qdo tivesse transferindo os dados se ficassem em execução apos x tempo o processo fosse abortado.
Um profissional aqui disse que bastaria usar o sleep, mas ficou muito vago, pois quando uso o sleep antes do comando ftp - inv... o processo espera x tempo e depois começa a executar, e quando uso após o ftp o processo executa inteiro para depois executar o comando sleep.
Ou seja, não sei como ou aonde usar o comando sleep.

abraços.


5. Re: Matar processo em shell script

Perfil removido
removido

(usa Nenhuma)

Enviado em 25/09/2012 - 21:14h


Jogue todo o seu código dentro de um bloco for... do... done onde deve conter um sleep


#!/bin/bash
# Um minuto para o término do script com 60 execuções
for i in {0..60}
do
# seu códgo aqui
sleep 1s
done







6. Re: Matar processo em shell script

Perfil removido
removido

(usa Nenhuma)

Enviado em 25/09/2012 - 21:33h


#!/bin/bash

IP="192.168.100.3"
USUARIO="ftp"
SENHA="123"
NOMEFILE="dados.txt"

ping -c1 -W1 $IP 1> /dev/null

if [ $? == 0 ]

then

ftp -inv << EOF
open $IP
user $USUARIO $SENHA
prompt
ascii
get $NOMEFILE /bkp/$(date +"%Y-%m-%d").txt
bye
EOF

else

printf "Servidor não responde ao ping...\n"
mail -s ...

fi







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts