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':'',
'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()
day33-python阶段性复习七的更多相关文章
- python学习第七讲,python中的数据类型,列表,元祖,字典,之元祖使用与介绍
目录 python学习第七讲,python中的数据类型,列表,元祖,字典,之元祖使用与介绍 一丶元祖 1.元祖简介 2.元祖变量的定义 3.元祖变量的常用操作. 4.元祖的遍历 5.元祖的应用场景 p ...
- Python学习第七课
Python学习第七课 'Alex' "Alex"print('hello'*5) #重复输出字符串 print('hellowold'[2:]) #类似于切片操作:会取出 llo ...
- Python并发复习1 - 多线程
一.基本概念 程序: 指令集,静态, 进程: 当程序运行时,会创建进程,是操作系统资源分配的基本单位 线程: 进程的基本执行单元,每个进程至少包含一个线程,是任务调度和执行的基本单位 > 进程和 ...
- Python爬虫实战七之计算大学本学期绩点
大家好,本次为大家带来的项目是计算大学本学期绩点.首先说明的是,博主来自山东大学,有属于个人的学生成绩管理系统,需要学号密码才可以登录,不过可能广大读者没有这个学号密码,不能实际进行操作,所以最主要的 ...
- Python爬虫入门七之正则表达式
在前面我们已经搞定了怎样获取页面的内容,不过还差一步,这么多杂乱的代码夹杂文字我们怎样把它提取出来整理呢?下面就开始介绍一个十分强大的工具,正则表达式! 1.了解正则表达式 正则表达式是对字符串操作的 ...
- 转 Python爬虫入门七之正则表达式
静觅 » Python爬虫入门七之正则表达式 1.了解正则表达式 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符.及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串 ...
- python接口自动化测试七:获取登录的Cookies
python接口自动化测试七:获取登录的Cookies,并关联到下一个请求 获取登录的cookies:loginCookies = r.cookies 把获取到的cookies传入请求:cooki ...
- 2003031121——浦娟——Python数据分析第七周作业——MySQL的安装及使用
项目 要求 课程班级博客链接 20级数据班(本) 作业要求链接 Python第七周作业 博客名称 2003031121--浦娟--Python数据分析第七周作业--MySQL的安装及使用 要求 每道题 ...
- 【python自动化第七篇:面向对象进阶】
知识点概览: 静态方法,类方法,属性方法 类的特殊方法 反射 异常处理 socket开发基础 一.静态方法:@staticmethod 只是名义上归类管理,实际上在静态方法里访问不了类或者实例中的任何 ...
随机推荐
- 揭开yield关键字的神秘面纱
写在前言 经常会看见,python函数中带有yield关键字,那么yield是什么,有什么作用? 答案:可以理解yield是一个生成器: 作用:遇到yield关键字,函数会直接返回yield值,相当于 ...
- vue安装,router-link的一些属性,用法,tag active-class,to,replace,exex等等
第一步:$ npm install -g vue-cli 第二部:$ vue init webpack my-projectName 下面内容转载自:https://www.cnblogs.com/c ...
- VCS
timing check相关的, +notimingcheck命令,可以用在compile时,也可以用在run time的时候, 都是将检查timing的系统函数,都disable掉了, 加在comp ...
- 3D打印机如何添加自动调平功能
原理说明 Kossel/Rostock等Delta(并联/三角洲)类型的机器,可以参考:http://learn.makerlab.me/guides/11 3d打印打印时最重要的是第一层的效果,如果 ...
- win10安装JDK
1.下载 首先,在官网下载 JDK:Oracle 官网 如上图所示,在 Oracle 官网下载 JDK,有一点需要注意,那就是在咱们下载合适的 JDK 之前,需要先点击“标记1”所在的按钮,选择接受. ...
- Shiro权限管理框架
一.Shiro介绍 Apache Shiro 是Java 的一个安全框架.Shiro 可以非常容易的开发出足够好的应用,其不仅可以用在JavaSE 环境,也可以用在JavaEE 环境.Shiro 可以 ...
- zabbix 配置本地邮箱报警
Centos 6.5, Zabbix 3.0.4 后台配置email 浏览器登录zabbix后台,Administration -> Media types -> Email: 比较简单的 ...
- Python爬虫(一)——开封市58同城租房信息
代码: # coding=utf-8 import sys import csv import requests from bs4 import BeautifulSoup reload(sys) s ...
- Java中static的用法解析
知识点1.static关键字a.可以修饰变量,方法,代码块b.修饰的变量和方法可以使用类名.变量名/类名.方法名调用c.static修饰的资源为静态资源,在类加载的时候执行d.在静态方法中只能调用静态 ...
- mysql数据库explain命令用法详解
本文转自一位前辈的文章,感觉写得很好,就转过来了.这个是那位前辈的原文地址:http://www.111cn.net/database/mysql/81698.htm 当我们在优化SQL时,想看 ...