Fedora Cron Job precisa de ajuda

1

Eu preciso de alguns conselhos, pois estou sendo enlouquecido pelo Cron na minha caixa do Fedora 8.

eu tenho um script básico armazenado em

/tmp/myscript.sh

Aqui está uma cópia do código dentro desse script.

#!/bin/bash

AFolderName="archivefolder"
AFileName="archive.zip"

echo "setting variables"

if [ -d $AFolderName ]
then
rm -r $AFolderName
fi

echo "checked if folder exists"
mkdir $AFolderName
cd $AFolderName

echo "about to zip"
zip -r $(date +%Y%m%d)_$AFileName /var/www/*

echo "zipped"

echo "about to s3"
s3cmd put $(date +%Y%m%d)_$AFileName s3://mytestbucket

echo "s3ed"

cd ..
rm -r $AFolderName

echo "done"

Eu fiz o crontab -e e adicionei um trabalho de acordo com a formatação dele, e o trabalho parece ser executado quando eu obtenho um arquivo de log na pasta temp. no entanto não há nada no arquivo de log e nada é carregado para amazon ...

aqui está o que está em crontab

*/10 * * * * root /tmp/myscript.sh > /tmp/ms.log

o que estou fazendo errado? Não há nenhuma dica sobre qual é o problema. pela maneira como o script tem que ser executado como root.

    
por Kristiaan 20.07.2010 / 15:09

3 respostas

0

maneira correta de fazer isso foi

Aqui está uma cópia do código dentro do script que o sudo era necessário na linha s3cmd.

#!/bin/bash

AFolderName="archivefolder"
AFileName="archive.zip"

echo "setting variables"

if [ -d $AFolderName ]
then
rm -r $AFolderName
fi

echo "checked if folder exists"
mkdir $AFolderName
cd $AFolderName

echo "about to zip"
zip -r $(date +%Y%m%d)_$AFileName /var/www/*

echo "zipped"

echo "about to s3"
sudo s3cmd put $(date +%Y%m%d)_$AFileName s3://mytestbucket

echo "s3ed"

cd ..
rm -r $AFolderName

echo "done"

o crontab precisa ter a ROOT removida.

* / 10 * * * * /tmp/myscript.sh > /tmp/ms.log

    
por 20.07.2010 / 16:34
1

Concorde que você precisa logar como root ou $ sudo su para realmente se tornar root, então faça o seu # crontab -e e tire o "root" da sua linha crontab - já que parece que você descobriu que não como.

Em seguida, você pode executar seu script como root - praticamente como você já o tinha.

    
por 03.08.2010 / 03:25
0

Você tem certeza de que o arquivo tem o flag de execução invertido, ( ls -l /tmp/myscript.sh ) e que / tmp não está montado noexecute? ( mount ) O arquivo de log vazio será criado pelo shell, simplesmente devido ao redirecionamento. Mas isso não significa que o script está realmente em execução. E como você não redirecionou a saída de erros, nunca verá essa mensagem. (Embora provavelmente tenha sido enviado para o usuário root?)

Além do acima, algumas coisas para tentar:
A) Execute o script manualmente, a partir da linha de comando. Certifique-se de que realmente faça alguma coisa.
B) Você pode querer importar em um arquivo de perfil no início do script. Caso contrário, você pode encerrar as variáveis de caminho e ambiente que seu script pode precisar.
C) Redirecionar a saída de erro do cron job. Ou para o mesmo arquivo, com 2>&1 no final ou para um arquivo separado com 2> diff_file.txt . Isso provavelmente lhe dará algumas dicas sobre o que deu errado.


- Christopher Karel

    
por 20.07.2010 / 15:47

Tags