在nohup/screen之后,Python进程在SSH注销时挂起

2024-09-27 00:19:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个通过Blue Host的远程服务器,它旨在运行基于TwistedforPython的服务器。我只能通过SSH访问它,所以为了在注销后保持Python的运行,我尝试使用nohup python server.py &和{},得到的结果是相同的。在我注销SSH之前一切都很好——即使Python像预期的那样在后台运行,但是一旦我注销,我的客户机就不能再与服务器通信了。奇怪的是,如果我通过SSH重新登录并用ps aux检查正在运行的进程,我会看到Python正在运行,我的客户机可以再次成功地与服务器通信。即使我重新登录后根本不输入任何内容,一切都按预期工作。但是,当然,一旦我注销,服务器就好像不见了。在

我已经联系了托管服务的支持人员,以防这是他们这方面的一些奇怪之处,但希望这是可以在我这方面解决的问题。在

编辑:看来Blue Host不希望我在没有购买VPS升级的情况下做服务器y的事情,所以看起来这是个大问题。在

编辑2:好的,如果有人最终遇到类似的问题,那么主要问题是什么。我在最初的描述中弄错了;我可以连接到服务器,但是我马上就被踢出了一个MySQL错误。我想尝试在没有活动连接的情况下连接到localhost数据库可能会导致一些问题,因此我改为使用MySQL connection命令连接到我的站点的IP地址,尽管它与服务器的IP地址相同。就我的主要问题而言,这似乎起到了关键作用。在


Tags: py服务器host编辑客户机远程servermysql
1条回答
网友
1楼 · 发布于 2024-09-27 00:19:02

不要使用此方法来保持服务器进程的运行。{(改为尝试使用管理器}安装)。它允许您对进程进行守护进程,以及停止/重新启动等功能

下面是一个示例配置条目(/etc/supervisor/supervisord.conf):

[program:my_server]
command=python /path/to/server/server.py
directory=/path/to/server/
autostart=true
autorestart=true
stdout_logfile=/var/log/server.log
stderr_logfile=/var/log/server_error.log
user=your_linux_user_name

编辑配置后,执行以下操作:

^{pr2}$

您的服务器现在应该可以正常运行了。您可以通过sudo supervisorctl管理其生命周期

相关问题 更多 >

    热门问题