python编写脚本

#!/usr/bin/env python
#-*- coding:utf-8 -*-
import sys
import os
from subprocess import Popen,PIPE
class Process(object):
'''memcached process manger'''
def __init__(self,name,program,args,workdir):
self.name = name
self.program = program
self.args = args
self.workdir = workdir
def _init(self):
if not os.path.exists(self.workdir):
os.mkdir(self.workdir)
os.chdir(self.workdir)
def _pidFile(self):
return os.path.join(self.workdir,'%s.pid' %self.name)

def _writePid(self):
if self.pid:
with open(self._pidFile(),'w') as fd:
fd.write(str(self.pid))

def start(self):
if self._getPid():
print 'memcache is alreday start!!!'
sys.exit()
self._init()
cmd = self.program + ' ' + self.args
p = Popen(cmd,stdout=PIPE,shell=True)
self.pid = p.pid
self._writePid()
print '%s start sucessful' %(self.name)

def _getPid(self):
p = Popen(['pidof',self.name],stdout=PIPE)
pid = p.stdout.read().strip()	
return pid

def stop(self):
pid = self._getPid()
if pid:
os.kill(int(pid),15)
if os.path.exists(self._pidFile()):
os.remove(self._pidFile())
print '%s is stopped' %self.name
def restart(self):
self.stop()
self.start()

def status(self):
pid = self._getPid()
if pid:
print '%s is already running' % self.name
else:
print '%s is stop' % self.name

def help(self):
#	print 'start|stop|status'
print 'Usage %s {start|stop|restart|status}' %__file__

def main():
name = 'memcached'
prog = '/usr/bin/memcached'
args = '-u nobody -p 11211 -c 1024 -m 64'
wd = '/var/tmp/memcached'
pm = Process(name,prog,args,wd)
try:
cmd = sys.argv[1]
except:
print 'Opiton Error'
sys.exit()
if cmd =='start':
pm._init()
pm.start()
elif cmd == 'stop':
pm.stop()

elif cmd =='restart':
pm.restart()
elif cmd == 'status':
pm.status()
else:
pm.help()

if __name__=='__main__':
main()

  

 

  

posted @ 2018-01-12 20:37  某电商首席日志工程师  阅读(209)  评论(0编辑  收藏  举报