微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何从django / wsgi中调用bash进程?

我正在为django网站使用mod_wsgi apache2适配器,我喜欢在视图中调用一些bash进程,使用通常的

...
p = subprocess.Popen("/home/example.com/restart-tomcat.sh", shell=True)
sts = os.waitpid(p.pid, 0)[1]
...

这个代码在通常的python shell中完美运行,但在django中调用时什么都不做(我现在可以追踪).我错过了一些wsgi约束吗?该脚本有755个烫发,所以它应该是可执行的.

快速测试

p = subprocess.Popen("date >> home/example.com/wsgi-test.txt", shell=True)
sts = os.waitpid(p.pid, 0)[1]

揭示它甚至不执行琐碎的命令.我现在没有想法,并感谢任何意见.

谢谢.

解决方法:

脚本本身可能具有755个权限,但它调用内容可能没有正确的权限.特别是如果你在端口80上运行tomcat,这是一个特权端口.

有很多方法可以解决这类问题(setuid,sudo),但你最好知道自己在做什么.

我将更改您的Popen调用以打开另一个脚本,其内容日期为>> /home/example.com/test.txt只是为了查看它是否正在执行它,然后您可以担心尝试调试权限.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐