zoukankan      html  css  js  c++  java
  • day33-python阶段性复习七

    
    
    rc脚本练习


    #
    !/usr/bin/env python #coding:utf8 import sys import os from subprocess import Popen, PIPE class Process(object): '''memcached rc script''' args = {'USER':'memcached', 'PORT':11211, 'MAXCONN':1024, 'CACHESIZE':'64', 'OPTIONS':''} def __init__(self, name, program , workdir): self.name = name self.program = program 17 self.workdir = workdir def _init(self): '''/var/tmp/memcached''' if not os.path.exists(self.workdir): os.mkdir(self.workdir) os.chdir(self.workdir) def _pidFile(self): '''/var/tpm/memcached/memcached.pid''' return os.path.join(self.workdir,"%s.pid" % self.name) 27 def _writhPid(self): if self.pid: with open(self._pidFile(),'w') as fd: fd.write(str(self.pid)) def _readConf(self, f): with open(f) as fd: lines = fd.readlines() return dict([i.strip().replace('"','').split('=') for i in lines def _parseArgs(self): conf = self._readConf('/etc/sysconfig/memcached') if 'USER' in conf: self.args['USER'] = conf['USER'] if 'PORT'in conf: self.args['PORT'] = conf['PORT'] if 'MAXCONN' in conf: self.args['MAXCONN'] = conf['MAXCONN'] if 'CACHESEIZE' in conf: self.args['CACHESIZE'] = conf['CACHESIZE'] options = ['-u', self.args['USER'], '-p', self.args['PORT'], '-m', self.args['CACHESIZE'], '-c', self.args['MAXCONN']] os.system("chown %s %s" % (self.args['USER'], self.workdir)) return options 52 def start(self): pid = self._getPid() if pid: print "%s is running..." % self.name sys.exit() self._init() 59 cmd = [self.program] + self._parseArgs() + ['-d','-P', self._pidFile print cmd p = Popen(cmd, stdout=PIPE) # self.pid = p.pid # self._writhPid() print "%s start Sucessful" % self.name 66 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 78 def restart(self): self.stop() self.start() 82 def status(self): pid = self._getPid() if pid: print "%s is already runing" % self.name else: print "%s is not runing" % self.name 90 def help(self): print "Usage: %s {start|stop|status|restart} " % __file__ 93 def main(): name = 'memcached' prog = '/usr/bin/memcached' args = '-u nobody -p 11211 -c 1024 -m 64' wd = '/var/tmp/memcached' pm = Process(name=name, program=prog, # args=args, workdir=wd) try: cmd = sys.argv[1] except IndexError,e: print "Option error" sys.exit() if cmd == 'start': pm.start() elif cmd == 'stop': pm.stop() elif cmd == 'restart': pm.restart() elif cmd == 'status': pm.status() else: pm.help() if __name__ == '__main__': main()
  • 相关阅读:
    【2020-05-17】人生十三信条
    【2020-05-16】评价与骄傲
    【2020-05-15】每天都充满向上的激情
    【04NOIP普及组】火星人(信息学奥赛一本通 1929)(洛谷 1088)
    next_permutation(全排列算法)
    【03NOIP普及组】麦森数(信息学奥赛一本通 1925)(洛谷 1045)
    快速幂
    【03NOIP普及组】栈(信息学奥赛一本通 1924)(洛谷 1044)
    【06NOIP普及组】数列(信息学奥赛一本通 1937)(洛谷 1062)
    【00NOIP普及组】计算器的改良(信息学奥赛一本通 1910)(洛谷 1022)
  • 原文地址:https://www.cnblogs.com/wxp997/p/7979142.html
Copyright © 2011-2022 走看看