2

我正在使用结构构建一个 EC2 服务器,并希望为 pyapns 启动一个 Twisted 服务器。我尝试了几种不同的启动脚本的方法——只需调用sudo(...), 来创建init.d脚本。

该命令的结果如下:

/usr/local/bin/twistd -r epoll -u www-data -g www-data -l /var/log/apnslistener.log --pidfile=/var/run/apnslistener.pid web --class=pyapns.server.APNSServer --port=7077 -l /var/log/pyapns.log

在使用fabric时,无论是直接通过上面的行调用sudo(...)还是使用sudo启动init.d脚本,进程都不会真正启动成功。如果我登录该框并直接启动它,该过程将保持启动状态。

我已经让它通过织物工作,但我必须启动 init.d 脚本3 次才能粘住。记录--spew显示也不例外。如果我不运行它 3 次,即使是 .pid 文件也永远不会被创建。

我不知道从哪里开始弄清楚为什么会发生这种情况,并且 3x hack 100% 始终如一地工作。有任何想法吗?谢谢!

编辑

的输出/var/log/apnslistener.log如下。请注意服务器是如何仅在第三次成功启动的。

2012-04-16 01:52:08+0000 [-] Log opened.
2012-04-16 01:52:08+0000 [-] twistd 12.0.0 (/usr/bin/python 2.7.2) starting up.
2012-04-16 01:52:08+0000 [-] reactor class: twisted.internet.epollreactor.EPollReactor.
2012-04-16 01:52:09+0000 [-] Log opened.
2012-04-16 01:52:09+0000 [-] twistd 12.0.0 (/usr/bin/python 2.7.2) starting up.
2012-04-16 01:52:09+0000 [-] reactor class: twisted.internet.epollreactor.EPollReactor.
2012-04-16 01:52:10+0000 [-] Log opened.
2012-04-16 01:52:10+0000 [-] twistd 12.0.0 (/usr/bin/python 2.7.2) starting up.
2012-04-16 01:52:10+0000 [-] reactor class: twisted.internet.epollreactor.EPollReactor.
2012-04-16 01:52:10+0000 [-] Site starting on 7077
2012-04-16 01:52:10+0000 [-] Starting factory <twisted.web.server.Site instance at 0x1c6dc20>
2012-04-16 01:52:10+0000 [-] set uid/gid 33/33
2012-04-16 01:52:12+0000 [HTTPChannel,0,127.0.0.1] APNSService __init__
4

1 回答 1

2

这是文档中针对您的用例的部分。它与 sudo 无关,而与默认调用的 pty 设置有关。常见问题解答中的更多信息。

于 2012-04-16T19:55:44.723 回答