实例:用类来写一个 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是开 ...
随机推荐
- js压缩图片并上传,不失真,保证图片清晰度
<!DOCTYPE HTML> <html lang="zh-CN"> <head> <meta charset="UTF-8& ...
- java 中的 ThreadLocal
首先,ThreadLocal 不是用来解决共享对象的多线程访问问题的,一般情况下,通过ThreadLocal.set() 到线程中的对象是该线程自己使用的对象,其他线程是不需要访问的,也访问不到的.各 ...
- gvim配置到命令行可以使用
下载安装gvim后,把gvim的安装目录添加到环境变量.
- JFinal概述
JFinal概述 JFinal 是基于Java 语言的极速 web 开发框架,其核心设计目标是开发迅速.代码量少.学习简单.功能强大.轻量级.易扩展.Restful.在拥有Java语言所有优势的同时再 ...
- MFC中Carray的使用
CArray 需要包含的头文件 <afxtempl.h> CArray类支持与C arrays相似的数组,但是必要时可以动态压缩并扩展.数组索引从0开始.可以决定是固定数组上界还是允许当添 ...
- 一款基于jquery固定于顶部的导航
今天给大家分享一款基于jquery固定于顶部的导航,这款导航当浏览器滚动条位于顶部时,导航高度较高,当浏览器滚动向下滚动时,导航高度自动减低,并位于顶部.效果图如下: 在线预览 源码下载 实现的代 ...
- 如何在Windows Server 2008 R2下搭建FTP服务
在Windows Server 2008 R2下搭建FTP服务,供客户端读取和上传文件 百度经验:jingyan.baidu.com 工具/原料 Windows Server 2008 R2 百度经验 ...
- win10设置删除文件提示框
显示桌面,找到回收站 点击鼠标右键,点击“属性菜单” 勾选“显示删除对话框” 点击“应用”,点击“确定”. 测试一下吧,从电脑删除del删除一个文件.如下图所示,弹出了提示框.
- [转]Python Web部署方式总结
学过PHP的都了解,php的正式环境部署非常简单,改几个文件就OK,用FastCgi方式也是分分钟的事情.相比起来,Python在web应用上的部署就繁杂的多,主要是工具繁多,主流服务器支持不足,在了 ...
- ansible 变量传递到include
Task Include Files And Encouraging Reuse 假设您想在play或playbook中重复使用任务列表. 您可以使用include文件来执行此操作. 使用includ ...