0

我在文件“code.py”中有这些代码

param_list = ['/usr/bin/someapp.bin','-q','/usr/bin/someparam.conf','/tmp/output.pdf']
p = subprocess.Popen( param_list , shell=False, stdout=subprocess.PIPE )
p.communicate()

当我在终端shell下的code.py下运行时,someapp.bin将生成一个文件并输出为/tmp/output.pdf,它可以工作,用户是:ubuntu

但是当我尝试使用用户将其作为服务运行时:service_user 并确保 /tmp 文件夹对任何人都是可写且可访问的。

我的问题是为什么它无法生成,因为它假设正在服务中,我的怀疑是权限问题,但我无法让它工作,需要一些建议和帮助,谢谢。

4

1 回答 1

1

代码应该可以工作。要追踪问题:

  1. 添加print(os.getuid())到代码中以确保它以您期望的 UID 开头
  2. 启用日志记录/调试someapp.bin以查看是否有错误
  3. 检查退出代码
  4. 将命令的输出打印到控制台,以便您查看任何错误:

    output = p.communicate()[0]
    print(output)
    
于 2012-09-13T13:16:50.833 回答