rc脚本练习
来源:互联网 发布:2017淘宝全年的交易额 编辑:程序博客网 时间:2024/06/04 20:12
rc脚本练习#!/usr/bin/env python#coding:utf8import sysimport osfrom subprocess import Popen, PIPEclass Process(object):'''memcached rc script'''args = {'USER':'memcached','PORT':11211,'MAXCONN':1024,'CACHESIZE':'64','OPTIONS':''}def __init__(self, name, program , workdir):self.name = nameself.program = programself.workdir = workdirdef _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)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 linesdef _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 optionsdef start(self):pid = self._getPid()if pid:print "%s is running..." % self.namesys.exit()self._init()cmd = [self.program] + self._parseArgs() + ['-d','-P', self._pidFileprint cmdp = Popen(cmd, stdout=PIPE)# self.pid = p.pid# self._writhPid()print "%s start Sucessful" % self.namedef _getPid(self):p =Popen(['pidof', self.name], stdout=PIPE)pid = p.stdout.read().strip()return piddef 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.namedef restart(self):self.stop()self.start()def status(self):pid = self._getPid()if pid:print "%s is already runing" % self.nameelse:print "%s is not runing" % self.namedef help(self):print "Usage: %s {start|stop|status|restart} " % __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=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()
阅读全文
0 0
- rc脚本练习
- 资源脚本文件(*.rc)
- Android启动脚本init.rc
- Android启动脚本init.rc
- Android启动脚本init.rc
- Android启动脚本init.rc
- Android启动脚本init.rc
- Android启动脚本init.rc
- init.rc 脚本语法学习
- Android启动脚本init.rc
- Android启动脚本init.rc
- Android启动脚本init.rc
- Android启动脚本init.rc
- Android启动脚本init.rc
- Android启动脚本init.rc
- Android启动脚本init.rc
- Android启动脚本init.rc
- Android启动脚本init.rc
- Linux如何用yum安装软件或服务
- 安卓模拟器Genymotion安装及遇到的问题解决
- spring boot+mybatis+thymeleaf+apache shiro开发面向学习型的后台管理系统BootDo
- CSS高级技巧
- 1279转换为大写
- rc脚本练习
- ecshop二次开发手册,ECSHOP文件结构,ECSHOP目录详解
- 图数据挖掘浅析
- 自己修改select的样式(修改select右边的小三角)
- 【VR9项目】Sys_config.fex
- 第二个错排题(RPG的错排)
- 合肥地区
- 蓝桥杯 算法训练 最大最小公倍数
- 共享网卡,让另一台设备有线连接可以上网