我最近将 Trac 从 0.11.4 更新到了 0.12.2。我使用以下 shell 脚本来备份 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
从控制台运行时,它工作正常,但 cronjob 失败并显示以下消息:
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
为什么手动运行时可以工作,而从 crontab 运行时却不行?如果我现在使用 0.12.2,为什么它会寻找 0.11.4 版本的 Trac?
Trac 已安装并升级easy_install
。
答案1
建议在 cron 作业中使用完整路径。否则,您可能最终会调用错误的脚本或程序。
此外,您需要确保在同一用户下执行脚本。