如何使Python脚本作为服务运行?

我想在CENTOS服务器中运行python脚本" title="python脚本">python脚本:

#!/usr/bin/env python

import socket

try:

import thread

except ImportError:

import _thread as thread #Py3K changed it.

class Polserv(object):

def __init__(self):

self.numthreads = 0

self.tidcount = 0

self.port = 843

self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

self.sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)

self.sock.bind(('100.100.100.100', self.port))

self.sock.listen(5)

def run(self):

while True:

thread.start_new_thread(self.handle, self.sock.accept())

def handle(self,conn,addr):

self.numthreads += 1

self.tidcount += 1

tid=self.tidcount

while True:

data=conn.recv(2048)

if not data:

conn.close()

self.numthreads-=1

break

#if "<policy-file-request/>\0" in data:

conn.sendall(b"<?xml version='1.0'?><cross-domain-policy><allow-access-from domain='*' to-ports='*'/></cross-domain-policy>")

conn.close()

self.numthreads-=1

break

#conn.sendall(b"[#%d (%d running)] %s" % (tid,self.numthreads,data) )

Polserv().run()

我正在使用$ python flashpolicyd.py它,并且工作正常…问题是:即使关闭ssh控制台后,如何保持此脚本运行?

回答:

我使用此代码来守护我的应用程序。它允许您start/stop/restart使用以下命令来编写脚本。

python myscript.py start

python myscript.py stop

python myscript.py restart

除此之外,我还有一个init.d脚本来控制我的服务。这使您可以在操作系统启动时自动启动服务。

这是一个简单的示例,可以助您一臂之力。只需将代码移到一个类中,然后从run内部的函数中调用它即可MyDeamon

import sys

import time

from daemon import Daemon

class YourCode(object):

def run(self):

while True:

time.sleep(1)

class MyDaemon(Daemon):

def run(self):

# Or simply merge your code with MyDaemon.

your_code = YourCode()

your_code.run()

if __name__ == "__main__":

daemon = MyDaemon('/tmp/daemon-example.pid')

if len(sys.argv) == 2:

if 'start' == sys.argv[1]:

daemon.start()

elif 'stop' == sys.argv[1]:

daemon.stop()

elif 'restart' == sys.argv[1]:

daemon.restart()

else:

print "Unknown command"

sys.exit(2)

sys.exit(0)

else:

print "usage: %s start|stop|restart" % sys.argv[0]

sys.exit(2)

如果您正在运行使用Upstart的操作系统(例如CentOS

6)-您也可以使用Upstart来管理服务。如果您使用Upstart,则可以按原样保留脚本,只需在下面添加如下内容/etc/init/my-

service.conf

start on started sshd

stop on runlevel [!2345]

exec /usr/bin/python /opt/my_service.py

respawn

然后,您可以使用启动/停止/重新启动来管理服务。

例如

start my-service

stop my-service

restart my-service

这里提供了使用新贵的更详细的示例。

以上是 如何使Python脚本作为服务运行? 的全部内容, 来源链接: utcz.com/qa/421126.html

回到顶部