执行Python脚本时,报如下错误:

['mkdir -p /tmp/gluster_volume_files.can.not.delete']

[E 150529 11:36:14 web:1030] Uncaught exception GET /api/v1/volume/df/tank (10.58.164.150)

    HTTPRequest(protocol='http', host='10.160.140.23:8000', method='GET', uri='/api/v1/volume/df/tank', version='HTTP/1.1', remote_ip='10.58.164.150', body='', headers={'Connection': 'keep-alive', 'Accept-Language': 'zh-CN,zh;q=0.8', 'Accept-Encoding': 'gzip, deflate, sdch', 'Cache-Control': 'max-age=0', 'Host': '10.160.140.23:8000', 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,p_w_picpath/webp,*/*;q=0.8', 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.93 Safari/537.36'})

    Traceback (most recent call last):

      File "/usr/lib/python2.6/site-packages/tornado/web.py", line 987, in _execute

        getattr(self, self.request.method.lower())(*args, **kwargs)

      File "/root/dzq/workspace/tools/glusterfs-rest/glusterrest/restapi.py", line 214, in get

        self.write(volume_df(vol))

      File "/root/dzq/workspace/tools/glusterfs-rest/glusterrest/restapi.py", line 90, in volume_df

        return run_and_response(volume.df, [vol])

      File "/root/dzq/workspace/tools/glusterfs-rest/glusterrest/restapi.py", line 44, in run_and_response

        return resp_success(func(*args))

      File "/root/dzq/workspace/tools/glusterfs-rest/glusterrest/cli/volume.py", line 399, in df

        utils.checkstatuszero(cmd1)

      File "/root/dzq/workspace/tools/glusterfs-rest/glusterrest/utils.py", line 29, in checkstatuszero

        rc, out, err = execute(cmd)

      File "/root/dzq/workspace/tools/glusterfs-rest/glusterrest/utils.py", line 21, in execute

        close_fds=close_fds)

      File "/usr/lib64/python2.6/subprocess.py", line 642, in __init__

        errread, errwrite)

      File "/usr/lib64/python2.6/subprocess.py", line 1234, in _execute_child

        raise child_exception

    OSError: [Errno 2] No such file or directory



解决方案:

方案1:Popen中加shell=true选项。

方案2:将命令更为如下形式传入:cmd = ['mkdir'] + ['-p'] + ['/tmp/gluster_volume_files.can.not.delete']


参考:http://stackoverflow.com/questions/901982/python-oserror-errno-2