2016-12-26 32 views
1

我有一个简单的socketServer,它在主线程上完美工作。如何将SimpleSocket服务器移动到后台进程

#Server PORT 
PORT = 8020 
#reassign variables 
Handler = Server #this is a SimpleHTTPHandler 

httpd = SocketServer.TCPServer(("", PORT), Handler) 

httpd.serve_forever() 

我需要在后台运行这个并有随意停止进程的能力。什么是正确的方法来做到这一点?

编辑

对不起,我不清楚。我需要让服务器不停地运行,并且我只能从SSH访问系统,所以我不能启动它并离开。

+0

在什么操作系统,你运行你的脚本?请添加相应的标签。你在使用bash吗?如果是这样,请添加相应的标签。 –

+0

CentOS 6.6。那么,NIX只有 –

回答

2

假设你一个POSIX操作系统上运行的脚本,脚本名为socket_server.py,您可以使用nohup这样的:

$ nohup python socket_server.py >> /dev/null 2>&1 & 

这将使你的脚本在后台,使其不被挂起,你可以退出你的SSH会话。后来

$ [1] 1234 

你可以阻止它通过获取发送使用kill一个SIGTERM:shell将打印出来的作业编号和PID

$ kill -SIGTERM 1234 
0

您可能需要穿线/ _Thread

def server(): 
    .... 

import _thread 
_thread.start_new_thread(server,()) 

这基本上开始在不同的线程的服务器功能。

编辑: 在这种情况下,您def server():你一个全局变量threadIsRunning,如果这是有价值的,以True应该继续,但如果它被重视到False运行thread.exit()这都应该以某种循环。

+0

是的,但如果它被设置为守护进程,我该如何停止该线程? –

+0

我编辑了答案。有一段时间没有看到您的评论。 – Octo

+0

我必须用SSH启动服务器。服务器在我退出终端时死亡。 –

相关问题