crontab

1. crontab

Alvaro
aalves

(usa Ubuntu)

Enviado em 07/05/2010 - 09:56h

Olá galera, é o seguinte tenho um script rodando através do crontab, e nesse script tem algumas informação que estão sendo redirecionadas para um arquivo .txt, e pelo que me parece, só não está funcionando pq o crontab não está sendo executado no diretório que configurei
16 09 * * * /bk_dotproject/del_backup.sh
e sim na pasta home do usuário ROOT, pois como disse o arquivo .txt que está sendo criado, está sendo gravado no home do root. Alguém pode me ajudar ?


  


2. Re: crontab

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 07/05/2010 - 10:00h

Coloque o conteúdo do seu script aki pra gente analisar. Se está funcionando, mas num tá gravando no lugar correto, acredito q seja no script.


3. Re: crontab

Jardel D. Berti
killlers

(usa Ubuntu)

Enviado em 07/05/2010 - 10:06h

o contrab executa esse arquivo ?
se sim o problema esta no script e não no contrab.


4. Re: crontab

Alvaro
aalves

(usa Ubuntu)

Enviado em 07/05/2010 - 10:16h

o script está certo, pois se rodo ele manualmente ele cria o .txt e remove o arquivo corretamente.

Todo caso, segue o script:


#!/bin/bash
#Script para apagar o bckup mais antigo
timestamp=$(date +"%Y%m%d" )
bk1="vazio"
bk2="vazio"
bk1data=00000000
bk2data=00000000

for LINHA in $(ls -lt bk_dotproject* | cut -c49-90); do
if [ "$bk1" = "vazio" ]; then
bk1=$LINHA
else
if [ "$bk2" = "vazio" ]; then
bk2=$LINHA
fi
fi
done

if [ "$bk2" = "vazio" ]; then
echo >> historico.txt "Nao existem 2 arquivos de backup - $timestamp."
else
bk1data=$(ls -lt $bk1 | cut -c63-70)
bk2data=$(ls -lt $bk2 | cut -c63-70)
echo $bk1data
echo $bk2data

if [ $bk1data -lt $bk2data ]; then
echo >> historico.txt "Apagando "$bk1" - Arquivo removido dia: $timestamp"
rm $bk1
else
echo >> historico.txt "Apagando "$bk2" - Arquivo removido dia: $timestamp"
rm $bk2
fi

fi



5. Re: crontab

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 07/05/2010 - 10:25h

Só coloque o caminho completo do arquivo historico.txt. Assim, vc pode executá-lo d qq lugar q ele vai cair na pasta q vc designar. Supondo q vc queira gravar o historico.txt em /tmp, o seu script fica assim:

#!/bin/bash
#Script para apagar o bckup mais antigo
timestamp=$(date +"%Y%m%d" )
bk1="vazio"
bk2="vazio"
bk1data=00000000
bk2data=00000000

for LINHA in $(ls -lt bk_dotproject* | cut -c49-90); do
if [ "$bk1" = "vazio" ]; then
bk1=$LINHA
else
if [ "$bk2" = "vazio" ]; then
bk2=$LINHA
fi
fi
done

if [ "$bk2" = "vazio" ]; then
echo >> /tmp/historico.txt "Nao existem 2 arquivos de backup - $timestamp."
else
bk1data=$(ls -lt $bk1 | cut -c63-70)
bk2data=$(ls -lt $bk2 | cut -c63-70)
echo $bk1data
echo $bk2data

if [ $bk1data -lt $bk2data ]; then
echo >> /tmp/historico.txt "Apagando "$bk1" - Arquivo removido dia: $timestamp"
rm $bk1
else
echo >> /tmp/historico.txt "Apagando "$bk2" - Arquivo removido dia: $timestamp"
rm $bk2
fi

fi


6. Re: crontab

Alvaro
aalves

(usa Ubuntu)

Enviado em 07/05/2010 - 10:35h

OK, deu certo. Mas agora estou com outro problema, de acordo com o script que enviei, dá para perceber que estou fazendo uma comparação de dois nomes de arquivos, e deletando o mais antigo, pois bem, o script NÃO está deletando rodando através do cron...mas se novamente rodo ele manualmente o script funciona tudo ok.

Seria o caso de nessa linha
for LINHA in $(ls -lt bk_dotproject* | cut -c49-90); do

eu colocar o endereço completo tbm como por exemplo
for LINHA in $(ls -lt [diretório]/bk_dotproject* | cut -c49-90); do

Obrigado.


7. Re: crontab

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 07/05/2010 - 10:38h

Isso msm! Eu não percebi esse arquivo ae. Tudo q referencia-se a arquivo, vc deve colocar o caminho completo.


8. Re: crontab

Alvaro
aalves

(usa Ubuntu)

Enviado em 07/05/2010 - 10:44h

Olá, agora está começando a dar certo... está gravando a menssgem
if [ $bk1data -lt $bk2data ]; then
echo >> historico.txt "Apagando "$bk1" - Arquivo removido dia: $timestamp"
rm $bk1
else
echo >> historico.txt "Apagando "$bk2" - Arquivo removido dia: $timestamp"
rm $bk2
fi

no arquivo historico.txt de acordo com o "if" , porém não está apagando o arquivo de backup... ou seja, através do recado ele diz que apagou...mas na rela não apagou o arquivo !!! como isso pode acontecer?!?!?!?!....

Vamos resolver isso !!!!


9. Re: crontab

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 07/05/2010 - 10:51h

Seguindo o meu exemplo, na linha for, deixe assim:

for LINHA in $(ls -lt /tmp/bk_dotproject* | cut -c49-90); do

Ae dá certo...


10. Re: crontab

Alvaro
aalves

(usa Ubuntu)

Enviado em 07/05/2010 - 10:53h

entao, fiz isso e coloquei o diretório onde o meu script está salvo, e apartir dai começou a gravar a mensagem, mas ele não está apagando o arquivo.


11. Re: crontab

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 07/05/2010 - 11:10h

Acho q vc não alterou a linha q t pedi. É na condição for q consta o caminho q t falei, pq o script está todo enlaçado na variável LINHA. Olhe com atenção e modifique.


12. Re: crontab

Alvaro
aalves

(usa Ubuntu)

Enviado em 07/05/2010 - 11:14h

segue o script :


#!/bin/bash
#Script para apagar o bckup mais antigo
timestamp=$(date +"%Y%m%d" )
bk1="vazio"
bk2="vazio"
bk1data=00000000
bk2data=00000000

#echo >> alvaro.txt "$timestamp-Script para apagar o backup mais antigo."
cd /bk_dotproject
for LINHA in $(ls -lt /bk_dotproject/bk_dotproject* | cut -c49-90); do
if [ "$bk1" = "vazio" ]; then
bk1=$LINHA
else
if [ "$bk2" = "vazio" ]; then
bk2=$LINHA
fi
fi
done

if [ "$bk2" = "vazio" ]; then
echo >> /bk_dotproject/historico.txt "Nao existem 2 arquivos de backup - $timestamp."
else
bk1data=$(ls -lt $bk1 | cut -c63-70)
bk2data=$(ls -lt $bk2 | cut -c63-70)
echo $bk1data
echo $bk2data

if [ $bk1data -lt $bk2data ]; then
echo >> /bk_dotproject/historico.txt "Apagando "$bk1" - Arquivo removido dia: $timestamp"
rm $bk1
else
echo >> /bk_dotproject/historico.txt "Apagando "$bk2" - Arquivo removido dia: $timestamp"
rm $bk2
fi

fi



Inclusive coloquei um cd /bk_dotproject no início para que ele entre na pasta dotproject.



01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts