Crontab não executa ShellScript de backup

Iniciado por fino, 30 de Março de 2007, 21:07

tópico anterior - próximo tópico

fino

Pessoal,

Estou com problemas no Crontab do UBUNTU 6.10, agendei para ele fazer o script de Backup e não executa, mais se eu executar o shellscript na mão funciona certinho.
Pior de tudo não retorna erro nenhum, nos logs.

Se alguém pode ajudar !!!

Fino
Fino

clcampos

#1
Rode seu shell em batch e veja se ele vai executar sem problemas.

De qualquer forma, tentando adiantar um provável problema para a rotina não rodar usando-se o cron, mas rodar normalmente... vou dar um chute aqui e passar um dos possíveis problemas. O tratamento de variáveis quando se executa um shell script é diferente de se rodar o shell direto no prompt (ao menos era assim no UNIX, e tenho feito da mesma forma e não tem dado problema). Talvez seja isto, então com o teste você tira a dúvida.

De qualquer forma, até onde sei (na versão do UNIX que eu usava até 1999), as variáveis que devem ser compostas durante a execução devem ser precedidas de uma "\".

Tipo assim, se você precisa de uma variável com a data, e ela não vai mudar, ou depender de outra coisa basta colocar $DATA (por exemplo).

Já se você esta compondo uma variável com os dados de outra... vou exemplificar:

SALARIO=`expr $BRUTO - $DESC`

Você deve compor a variável assim:

SALARIO=\`expr \$BRUTO - \$DESC\`

Isto porque senão, assim que o shell começa a ser executado (em batch) ele pega todas as variáveis sem a "\" e já a substitui pelos seus valores naquele momento.

Portanto uma composição de DATA (exemplo de novo) não teria problema pq a informação já viria do sistema, mas uma formula como a de cima teria as variáveis $BRUTO e $LIQ ainda não preenchidas, o que poderia causar um erro....

Olha, desculpe se não consegui explicar direito e se me enrolei,  me complico com as palavras um pouco, e também me desculpe se no Linux não for assim, pois como te disse aprendi a mexer com shell em 1989, e era no UNIX.

Espero que seu problema seja resolvido, caso contrário tentamos de novo... quem sabe não é algo simples e o cron simplesmente não "startou" a rotina.

Cristiano/Timóteo - MG
.: Como Fazer Perguntas de Forma Inteligente :.                
Com dúvida? pesquise!

zmangabeira


Olá, aproveito a dúvida anterior pra reiterar que comigo ocorre a mesma coisa. to tentando um script simples de backup que funciona quando eu executo na linha de comando, como usuário normal do ubuntu edgy

O curioso é que quando adiciono ao crontab (crontab -e)

Ele também executa, mas para religiosamente quando ating 272,6 MB. Já conferi que o arquivo tem mais de 750 MB. Tanto que quando executo sem o cron, ele atinge esse valor.

segui a dica da variável que o amigo disse, mas o problema continua. É realmente curioso, porque ele para na metade do caminho.

Já tentei como root também e acontece a mesma coisa.

A pasta que estou fazendo backup tem permissão (mas acho que esse não é o problema, pois consigo fazer o backup total sem o cron, usando usuário normal do ubuntu)

Se alguém puder me ajudar, ou demonstrar algum vacilo de principiante que estou cometendo, agradeço:

SCRIPT:

DATA=`date +%Y-%m-%d-%H.%M`
  cd home/andre/
  tar -zcvf backupdocumentos-"$DATA".tar.gz /media/sda1/'Documents and Settings'/andre/'Meus documentos'

crontab:

andre@andre:~$ crontab -l
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
# m h  dom mon dow   command
56 10 * * 4 /home/andre/backupdocumentos.sh



rafael###

#3
Gente não sei c tem a ver mas eu a um tempo atrás tive este problema também, hoje em dia no crontab eu sempre redireciono a saída do script pra algum terminal, exemplo:

Citar
root@zion:/home/rafael# cat /etc/crontab

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
*/1 * * * *     rafael  /home/rafael/wv.sh
#0  4   * * *   root    /home/rafael/despertador.sh >> /dev/pts/3
#0 3    * * *   root    halt

Agora tem scripts que não preciso redirecionar a saída que vai normal que é o caso do wv.sh como vocês podem ver acima! Não sei c tem algo a ver mas não custa tentar ajudar!!

Espero que ajude flwwss

*lembrando que está é a "agenda" do sistema diferente da agenda do usuário (crontab -e)



GNU/Linux e SL um novo estilo de vida!!!!!!!!!!

zmangabeira

Matou a pau amigo.

Era isso mesmo, quando redireciono pra algum terminal, vejo o script rodar por inteiro. E ele não para. Vai até o final, concluindo a compactação. (diferentemente da outra forma que só ia até a metade).

OBRIGADO pela ajuda.

grande abraço.


rafael###

Blz cara!! Sempre que precisar estamos ae!!  ;)



GNU/Linux e SL um novo estilo de vida!!!!!!!!!!

fino

Rafael,

Fiz como tu disse, direcionei para um terminal e funfou blzinha !!!

Valeu !!

:D
Fino

fabioandre.bc

Citação de: rafael### online 05 de Abril de 2007, 12:15
Gente não sei c tem a ver mas eu a um tempo atrás tive este problema também, hoje em dia no crontab eu sempre redireciono a saída do script pra algum terminal, exemplo:

Citar
root@zion:/home/rafael# cat /etc/crontab

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
*/1 * * * *     rafael  /home/rafael/wv.sh
#0  4   * * *   root    /home/rafael/despertador.sh >> /dev/pts/3
#0 3    * * *   root    halt



Realmente isso funciona.. mas no caso do ubuntu /dev/pts/x soh eh criado depois que vc loga...
tem alguma maneira de fazer isso funcionar ? sem que ter que deixar o servidor logado para ele criar o /dev/pts/0 Ex



fabioandre.bc

para quem tiver esse problema.. do /dev/pts/x
podem usar o terminal "fisico" do ubuntu ae a saida ficaria como /dev/tty1
funcionou normal.. mas o meu problema eh com outro script que usa rsync

esse tah literalmente de rosca.... se alguem quiser ajudar fico grato

fcandrade

amigo funcionou que foi uma BELEZA
crontab -e
00 04 * * * /home/copias/diaria >> /dev/tty1

MUITO OBRIGADO MESMO