+ Responder ao Tópico



  1. #1

    Padrão script na cron nao funciona

    ola, fiz um script de backup que esta listado abaixo, copiei este arquivo com permissão de eexecução no /usr/bin e no /etc/cron.daily, porém, ele não esta iniciando automaticamente no horario determinado. Alguem pode me dizer o pq ?...[]s...

    #! /bin/sh
    # Definicao das variaveis utilizadas neste script

    DATA_DO_BACKUP=`date +%d-%m-%Y` #Data do backup.

    NOME_DO_SERVIDOR=`hostname -a` #Nome da maquina, sem o dominio

    NOMEFIXO="bkp_home" #A parte fixa do nome do pacote

    DIRETORIO="/backup" #Onde o arquivo tar sera armazenado

    TAR="/bin/tar" #O binario que iremos utilizar

    OPCOES1="--exclude "*.ant"" #Exclui os arquivos com final ".ant"

    OPCOES2="--exclude "*lixo*"" #Exclui os arquivos com a string "lixo"

    OPCOES3="-zcvf" #Opcoes para a gerar e compactar

    ARQ_CRON="/etc/cron.daily/bkp.sh" #Arquivo da agenda do sistema

    NOME_SCRIPT="/usr/bin/bkp.sh" #Caminho absoluto do script de backup

    USER="root" #Usuario que rodara o script na cron

    AGENDA="00 22 * * 1-6" #Data/hora na cron para rodar o script


    #(cinco campos separados por um espaco)

    LINHA=$AGENDA" "$USER" "$NOME_SCRIPT #Linha que sera incluida na cron

    ###################################################################

    # Vamos iniciar.
    # Limpamos a tela.
    clear

    #Vamos para o diretorio onde o pacote gerado ficara
    cd $DIRETORIO

    echo "Iniciando a geracao do pacote tar ...."; sleep 1

    $TAR $OPCOES1 $OPCOES2 $OPCOES3 "$NOMEFIXO"_"$NOME_DO_SERVIDOR"_"$DATA_DO_BACKUP".tgz /home

    # Testa o codigo da saida (se o comando foi feliz)

    if [ $DIRETORIO -ne 0 ]; then
    echo "Alguma coisa saiu errada ...."
    echo ""
    echo "Contate o administrador do sistema.";sleep 1
    exit 1
    fi
    echo "Ufa, terminei "
    echo ""
    echo " O arquivo gerado encontra-se no diretorio $DIRETORIO"
    # Verifica se este script esta ativo na crontab do sistema
    cat $ARQ_CRON |grep $NOME_SCRIPT |grep -v "#" >/dev/null
    if [ $NOME_SCRIPT -ne 0 ]; then
    echo "Este script nao esta ativo na agenda do sistema"
    echo "Vou inclui-lo para voce ..."; sleep 1
    echo "$LINHA">>$ARQ_CRON
    fi
    exit 0

  2. #2

    Padrão Re: script na cron nao funciona

    Amigo, como detectou que não tá rodando?
    Tentou rodar o script manualmente e ele funciona?
    O que diz nos logs /var/log/messages

    Explique-nos melhor...

  3. #3

    Padrão Re: script na cron nao funciona

    Geralmente, a saída dos comandos executados em crontabs são enviadas por e-mail (Caso exista um servidor de e-mail local, óbviamemente) ou mostradas no arquivo /var/log/syslog ou /var/log/messages (Como o amigo acima mencionou). Lembre-se que você deve ao máximo adicionar redirecionamentos para /dev/null ao final de suas linhas, para evitar este tipo de problema e também adicionar o caminho inteiro dos seus binários.

    Também recomendo que você adicione scripts de backup no crontab do superuser root.


    Abraços!

  4. #4

    Padrão Re: script na cron nao funciona

    Amigo aproveitando a deixa, como fazer essa operação diretamente em meus scripts:

    Código :
    Lembre-se que você deve ao máximo adicionar redirecionamentos para /dev/null ao final de suas linhas, para evitar este tipo de problema

  5. #5

    Padrão Re: script na cron nao funciona

    Bem, é simples.

    Vamos levar em consideração que existem vários binários em UNIX que escrevem em STOUT. O grande problema é que nem sempre o usuário do CRON (Ou que está rodando o script) possui um STDOUT, o quê é um probleminha. Sendo assim, nós redirecionamos as saídas dos comandos para /dev/null, assim:

    Código :
    NULL="/dev/null"
    /bin/tar -cvfz backup.tar.gz /home > $NULL

    Abraços!