#!/usr/bin/env python # -*- conding: utf-8 -*- import os import sys import shlex from subprocess import Popen, PIPE work_dir = "/var/tmp" class Process(object): args = [] '''memcached rc script''' def __init__(self,name, program, work_dir, args=[] ): self.name = name self.program = program self.args += [] self.work_dir = work_dir def init(self): if not os.path.exists(self.work_dir): os.mkdir(self.work_dir) os.chdir(self.work_dir) def _get_status(self): pass def _pidFile(self): '''/var/tmp/memcached/memcached.pid''' return os.path.join(self.work_dir,"%s.pid" % self.name) def _writePid(self): with open(self._pidFile(), 'w') as fd: fd.write(str(self.pid)) def parser_args(self): config = readConfig() if 'USER' in config: self.args += ['-u', config['USER']] if 'PORT' in config: self.args += ['-p', config['PORT']] if 'MAXCONN' in config: self.args += ['-c', config['MAXCONN']] if 'CACHESIZE' in config: self.args += ['-m', config['CACHESIZE']] if 'DAEMON' in config: self.args += ['-d', config['DAEMON']] if 'PID' in config: self.args += ['-p', config['PID']] print self.args return self.args def start(self): p_check = Popen(['pidof', 'memcached'], stdout=PIPE) if p_check.stdout.read(): print "memcached is already running..." sys.exit() self.init() self.args = self.parser_args() cmd = [self.program] + self.args p = Popen(cmd, stdout=PIPE) self.pid = p.pid self._writePid() print "memcached start DONE" def _readPid(self): if os.path.exists(self._pidFile()): with open(self._pidFile()) as fd: return int(fd.read()) def _checkPid(self, pid): return os.path.exists('/proc/%s' % pid) def stop(self): pid = self._readPid() if self._checkPid(pid): os.kill(pid, 15) os.remove(self._pidFile()) print "memcached stop DONE" def status(self): if self._checkPid(self._readPid()): print "memcached is running..." else: print "memcached not running" def restart(self): self.stop() self.start() def readConfig(): f = open('/etc/sysconfig/memcached') lines = f.readlines() return dict([i.strip().replace('"','').split('=') for i in lines]) def main(): name = 'memcached' program = '/usr/bin/memcached' #args = '-u memcached -p 11211' wd = '/var/tmp/memcached' pm = Process(name, program, wd) try: m = sys.argv[1] except IndexError,e: print "options error" sys.exit() if sys.argv[1] == 'start': pm.start() elif sys.argv[1] == 'stop': pm.stop() elif sys.argv[1] == 'status': pm.status() elif sys.argv[1] == 'restart': pm.restart() if __name__ == '__main__': main()
memcached管理工具(python)
原创
©著作权归作者所有:来自51CTO博客作者muzinan110的原创作品,谢绝转载,否则将追究法律责任
上一篇:python puppet
下一篇:django
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
【Docker管理工具】安装Oxker容器管理工具
【Docker管理工具】安装Oxker容器管理工具
Docker docker 应用程序 -
NoSQL 数据库管理工具,支持:Redis、Memcached、SSDB、LevelDB、RocksDB
从单一应用程序中同时连接 Redis、Memcached、SSDB、LevelDB、RocksDB,你可以快速轻松地创建、管理和维护数据库。
Redis SSDB Memcached LevelDB RocksDB -
npm 包管理工具
探索 npm:JavaScript 的赛博配给站...
开发者 npm javascript -
docker管理工具推荐 docker管理工具中文
Portainer是一个可视化的容器镜像的图形管理工具,利用Portainer可以轻松构建,管理和维护Docker环境。 而且完全免费,基于容器化的安装方式,方便高效部署。官方站点:https://www.portainer.io/部署前提:已安装Docker可从互联网获取镜像1、拉取镜像首先查询镜像docker search portainer-ce查询结果: 查询portainer-c
docker portainer docker run -p docker开启远程访问 portainer docker portainer中文汉化