写的一个备份脚本,总共7台机器,有2台就是不执行。手动可以。cron就是不行。环境都一样。


后来在邮件中发现相关问题,如下:

Traceback (most recent call last):
  File "/bin/auto_bak.py", line 76, in 
    create_tarfile(tar_dir + "/" + dirname, filename, file_list)
  File "/bin/auto_bak.py", line 52, in create_tarfile
    bak_tar = tarfile.open(tar_name + filename, "w:bz2")
  File "/usr/local/python2.7/lib/python2.7/tarfile.py", line 1678, in open
    return func(name, filemode, fileobj, **kwargs)
  File "/usr/local/python2.7/lib/python2.7/tarfile.py", line 1746, in bz2open
    raise CompressionError("bz2 module is not available")
tarfile.CompressionError: bz2 module is not available

感觉很奇怪!这个模块是安装了,手动可以执行的。

服务器环境是 CentOS 5.9, 里面还有 python 2.4。 看样子还是cron执行时可能用的2.4版本?

尝试:

unlink /usr/bin/python
ln -s /usr/local/bin/python2.7 /usr/bin/python

再次 cron。 居然搞定!


这个链接我安装2.7时就已经做了。不过是

ln -s /usr/bin/python2.7 /usr/bin/python

查了一下

file /usr/bin/python2.7
/usr/bin/python2.7: symbolic link to `/usr/local/python2.7/bin/python'

难道是因为这个也是链接?

其它机器也这样折腾的,目前不是太明白。先记下了!