Recomenda-se usar caminhos completos em tarefas agendadas. Caso contrário, você pode acabar chamando o script ou programa errado.
Além disso, você precisa ter certeza de que está executando seu script sob o mesmo usuário.
Atualizei recentemente o Trac de 0.11.4 para 0.12.2. Estou usando o seguinte script de shell para fazer o backup da instalação do Trac:
#!/bin/sh
DIR=/root/backup/trac/
NAME='date +%Y-%m-%d-%H-%M'
cd $DIR
trac-admin /var/trac/projects/myproject/ hotcopy ./temp
tar -zcf TRAC_$NAME.tar.gz -C $DIR/temp .
rm -rf ./temp
Funciona bem quando executado a partir do console, mas o cronjob falha com a seguinte mensagem:
Traceback (most recent call last):
File "/usr/bin/trac-admin", line 5, in <module>
from pkg_resources import load_entry_point
File "/usr/lib/python2.6/dist-packages/pkg_resources.py", line 2675, in <module>
parse_requirements(__requires__), Environment()
File "/usr/lib/python2.6/dist-packages/pkg_resources.py", line 552, in resolve
raise DistributionNotFound(req)
pkg_resources.DistributionNotFound: Trac==0.11.4
tar: /root/backup/trac//temp: Cannot chdir: No such file or directory
tar: Error is not recoverable: exiting now
Por que funciona quando executado manualmente e não quando do crontab? Por que procura a versão 0.11.4 do Trac se eu usar 0.12.2 agora?
O Trac foi instalado e atualizado com easy_install
.