我正在使用python结构将二进制文件部署到ec2服务器,并尝试在后台运行它们(子shell)。
用于执行本地操作,放置文件和执行没有提升权限的远程命令的所有结构命令都可以正常工作。我遇到的问题是当我尝试运行二进制文件时。
with cd("deploy"):
run('mkdir log')
sudo('iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080', user="root")
result = sudo('./dbserver &', user="root") # <---- This line
print result
if result.failed:
print "Running dbserver failed"
else:
print "DBServer now running server" # this gets printed despite the binary not running
登录服务器后,ps aux | grep dbserver
没有显示任何内容。如何获取结构来执行二进制文件?从shell执行的相同命令./dbserver &
完全符合我的要求。感谢。
答案 0 :(得分:1)
这类似于TTY问题,和/或您正在尝试设置流程。
在这两个标题的FAQ中讨论了这两个问题:
http://www.fabfile.org/faq.html#init-scripts-don-t-work
http://www.fabfile.org/faq.html#why-can-t-i-run-programs-in-the-background-with-it-makes-fabric-hang
尝试像这样制作sudo:
sudo('nohup ./dbserver &', user=root, pty=False)