zoukankan      html  css  js  c++  java
  • 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()
    
      
    
     
    

      

  • 相关阅读:
    charles修改响应体
    charles重发网络请求&模拟慢速网络&过滤网络请求
    charles修改请求体内容
    monkeyrunner环境搭建以及实例(转)
    django模型中的抽象类(abstract)
    Linux启动/停止/重启Mysql数据库的方法
    ava.net.SocketException: Unrecognized Windows Sockets error: 0: JVM_Bind (解决思路)
    unix PS命令和JPS命令的区别
    mysql:表注释和字段注释
    mysql-关于Unix时间戳(unix_timestamp)
  • 原文地址:https://www.cnblogs.com/lin1/p/8277589.html
Copyright © 2011-2022 走看看