实例:用类来写一个 memcached 启动脚本
[root@localhost ~]$ yum install -y memcached
#!/usr/bin/env python
#-*- coding:utf-8 -*- import os
import sys
from subprocess import Popen, PIPE class Process(object): def __init__(self, name, program, args, workdir):
self.name = name
self.program = program
self.args = args
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/tmp/memcached/memcached.pid路径'''
return os.path.join(self.workdir, "%s.pid" % self.name) def _writePid(self):
'''把pid写入到pid文件'''
if self.pid:
with open(self._pidFile(), 'w') as fd:
fd.write(str(self.pid)) def _getPid(self):
'''获取pid'''
p = Popen(['pidof', self.name], stdout=PIPE)
pid = p.stdout.read().strip()
return pid def start(self):
'''定义start动作'''
self._init()
cmd = self.program + ' ' + self.args
p = Popen(cmd, stdout=PIPE, shell=True)
self.pid = p.pid
self._writePid()
print("%s start Successful" % self.name) def stop(self):
'''定义stop动作'''
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):
'''定义restart动作'''
self.stop()
self.start() def status(self):
'''定义status动作'''
pid = self._getPid()
if pid:
print("%s is already running..." % self.name)
else:
print("%s is not running..." % self.name) def help(self):
'''定义帮助信息'''
print("Usage: %s {start|stop|restart|status}" % __file__) def main():
name = 'memcached'
program = '/usr/bin/memcached'
args = '-u nobody -p 11211 -C 1024 -m 64'
workdir = '/var/tmp/memcached'
pm = Process(name = name, program = program, args = args, workdir = workdir) try:
cmd = sys.argv[1]
except IndexError, e:
pm.help()
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()
实例:用类来写一个 memcached 启动脚本的更多相关文章
- memcached启动脚本(class练习)
说明:使用类的方式编写程序启动脚本(memcached) import time import os from subprocess import Popen,PIPE class Process(o ...
- MTK(android init.rc) 写一个开机启动的服务
在开机往往我们想要做一些初始化的操作,这时候可以使用init.rc文件来实现,当然书写一个开机启动的服务也需要规范的. 假设是C程序,则需要准备C程序的源码,在我的例程中是一个在开机完成(androi ...
- python写一个邮箱伪造脚本
前言: 原本打算学php MVC的思路然后写一个项目.但是贼恶心, 写不出来.然后就还是用python写了个邮箱伪造. 0x01 第一步先去搜狐注册一个邮箱 然后,点开设置,开启SMTP服务. 当然你 ...
- 手把手用Monkey写一个压测脚本
版权声明: 本账号发布文章均来自公众号,承香墨影(cxmyDev),版权归承香墨影所有. 允许有条件转载,转载请附带底部二维码. 一.为什么需要一个测试脚本? 昨天讲解了Android Monkey命 ...
- 任务:写一个tomcat自启动脚本
写一篇<gitlab无法启动了应该怎么办>
- 写一个php小脚本辅助渗透测试
因为一个注入要爬行一些数据,然后写的一个小脚本,能写脚本来辅助渗透,也算是里程碑.哈哈哈 <?php $num = 1; while ($num <= 39) { $web_url = & ...
- memcached启动脚本以及telnet测试
memcached -m 1024 -u root -p 11211 -c 1024 -P /var/memcached.pid -d memcached 1.2.2 -p <num> T ...
- Memcached启动脚本
ched: MemCached Daemon # # chkconfig: - # description: MemCached Daemon # # Source function library. ...
- 30个类手写Spring核心原理之环境准备(1)
本文节选自<Spring 5核心原理> 1 IDEA集成Lombok插件 1.1 安装插件 IntelliJ IDEA是一款非常优秀的集成开发工具,功能强大,而且插件众多.Lombok是开 ...
随机推荐
- Makefile学习之路——4
变量的类别有递归扩展变量和简单扩展变量.只用一个“=”符号定义的变量被称为递归扩展变量.通过下面例子观察递归扩展变量的特点. .PHONY: all foo=$(bar) bar=$(ugh) ugh ...
- JAVA-一个简单的JSP程序(HelloWorld)
相关资料: <21天学通Java Web开发> 实例代码: 1.在虚拟目录下新建一个“HeoolWorld.jsp”文件.2.“HeoolWorld.jsp”文件内容如下: <htm ...
- 无法识别的属性 configProtectionProvider的解决方案
用RsaProtectedConfigurationProvider加密数据库连接字符串时,只要App.config有任何改动,都会提示无法识别的属性 configProtectionProvider ...
- LAN8710A/LAN8710Ai datasheet 记录
因为产品的双网口出现了问题,而且是AM335x 内部驱动,难度比较大,现从PHY 端开始分析相关原理,找到双网口不能使用的原因. 此篇是记录一些有关LAN8710A 这个PHY的一些特性. 各个功能模 ...
- git中文乱码解决方案
解决方案: 在bash提示符下输入: git config --global core.quotepath false core.quotepath设为false的话,就不会对0x80以上的字符进行q ...
- android矩阵具体解释
Matrix.中文里叫矩阵,高等数学里有介绍,在图像处理方面,主要是用于平面的缩放.平移.旋转等操作. 在Android里面,Matrix由9个float值构成.是一个3*3的矩阵. 最好记住.例如以 ...
- 时间控件 BeatPicker
项目展示 样式异样,可修改此样式,详见官网:https://github.com/ACT1GMR/BeatPicker --- 开始使用 1.引入js&css文件 <link rel=& ...
- node-webkit连接mysql
一.安装node.js mysql驱动库 node-webkit里面没有mysql模块的,我们需要安装mysql模块.我们可以使用npm(Node package manager)进行安装.这里使用到 ...
- C++ 的一个问题的理解(私有变量成员)
class CExample { public: CExample(){pBuffer=NULL; nSize=;} ~CExample(){delete pBuffer;} CExample(con ...
- 关于Cocos2d-x中增加暂停按钮的步骤
1.在GameScene.cpp的init方法中先定义一个里面放着可变换并在变换的时候会响应事件的MenuItem的Menu,这个Menu里面的可变换MenuItem又由两个小MenuItem组成,每 ...