rc脚本(类的定义与脚本的结构、start方法、stop和status方法、以daemon方式启动)...
rc脚本
1、安装memcached
yum install memcached -y
2、启动命令
-d:daemon启动(后台启动)
-p 端口
-u 指定哪个用户启动
-m 指定内存
-c 指定连接数
-P 指定pid
memcached -d -p 11211 -u memcached -m 64 -c 1024 -P /var/run/memcached/memcached.pid
参数化:
class Myclass(object):def __init__(self,name):self.name=nameprint 'I am %s' %self.name
cn=Myclass('wo')结果:
I am wo
备注:linux执行命令Popen、call:
标准输出传给管道(PIPE)
In [52]: subprocess.call('ls /root',shell=True)
123.txt anaconda-ks.cfg python shell test venv
Out[52]: 0
In [47]: PP=Popen(['ls','/root'],stdout=PIPE)
In [48]: tt=PP.stdout.read().strip()
In [49]: tt
Out[49]: '123.txt\nanaconda-ks.cfg\npython\nshell\ntest\nvenv'
3、先定义一个脚本的结构
import os
import sys
from subprocess import Popen,PIPE #这个是执行linux命令的
class Program(object):'''memcached rc.script'''def __init__(self,name,program,args,workdir): #初始化函数时定义参数self.name=name #main函数实例化的时候传入参数,将其作为类的属性self.program=programself.args=argsself.workdir=workdirdef _int(self): #只有一个下划线,就是一个类的方法'''/var/tmp/memcached'''if not os.path.exists(self.workdir): #判断当这个路径不存在时os.mkdir(self.workdir) #创建这个目录mkdir /var/tmp/memcachedos.chdir(self.workdir) #进入这个目录,cd /var/tmp/memcacheddef _pidFile(self):#为了输出‘/var/tmp/memcached/memcached.pid’'''/var/tmp/memcached/memcached.pid'''return os.path.join(self.workdir,"%s.pid" %self.name)def _writePid(self):#写入pid到文件里if self.pid: #判断这个pid是否存在,这个是在start函数定义with open(self._pidFile(),'w') as fd:#打开pid文件,在上面方法中定义fd.write(str(self.pid)+'\n') #需要转换为字符串才能写入def start(self): #启动self._int() #判断/var/tmp/memcached存在cmd=self.program + ' ' + self.args #执行命令p=Popen(cmd,stdout=PIPE,shell=True)#执行cmd命令,标准输出,True表示正确的输出self.pid=p.pidself._writePid()print '%s successing ...' %self.namedef stop(self):passdef restart(self):self.start()self.stop()def status(self):passdef help(self):print 'Usage:{start|stop|status|restart}'
def main(): #定义一个主函数name='memcached' #定义参数program='/usr/bin/memcached'args='-u memcached -p 11211 -c 1023 -m 64'wd='/var/tmp/memcached'pe=Program(name=name, #将类实例化才能调用构建函数program=program,args=args,workdir=wd)try: #异常处理,必须接上一个参数cmd=sys.argv[1]except IndexError,e:print 'Option error' #若没有参数,则打印sys.exit(1) #退出脚本if cmd == 'start':pe.start()elif cmd == 'stop':pe.stop()elif cmd == 'resatrt':pe.restart()elif cmd == 'status':pe.status()else:pe.help()if __name__=='__main__': #函数是主函数,就执行main()main()
import os
import sys
from subprocess import Popen,PIPE #这个是执行linux命令的
class Program(object):'''memcached rc.script'''def __init__(self,name,program,args,workdir): #初始化函数时定义参数self.name=name #main函数实例化的时候传入参数,将其作为类的属性self.program=programself.args=argsself.workdir=workdirdef _int(self): #只有一个下划线,就是一个类的方法'''/var/tmp/memcached'''if not os.path.exists(self.workdir): #判断当这个路径不存在时os.mkdir(self.workdir) #创建这个目录mkdir /var/tmp/memcachedos.chdir(self.workdir) #进入这个目录,cd /var/tmp/memcacheddef _pidFile(self):#为了输出‘/var/tmp/memcached/memcached.pid’'''/var/tmp/memcached/memcached.pid'''return os.path.join(self.workdir,"%s.pid" %self.name)def _writePid(self):#写入pid到文件里if self.pid: #判断这个pid是否存在,这个是在start函数定义with open(self._pidFile(),'w') as fd:#打开pid文件,在上面方法中定义fd.write(str(self.pid)+'\n') #需要转换为字符串才能写入def start(self): #启动pid=self._getPid() #判断下是否正在运行,若是的话就不要启动了,退出if pid: #这样的好处是以免产生不一样的pidprint '%s is running...' %self.namesys.exit(2)self._int() #判断/var/tmp/memcached存在cmd=self.program + ' ' + self.args #执行命令p=Popen(cmd,stdout=PIPE,shell=True)#执行cmd命令,标准输出,True表示正确的输出self.pid=p.pidself._writePid()print '%s successing ...' %self.namedef _getPid(self): #获取到pid后,再kill掉p=Popen(['pidof',self.name],stdout=PIPE) #pidof表示memcache的pidpid=p.stdout.read().strip()return piddef stop(self):pid=self._getPid() #调用类的方法if pid: #如果pid存在,则kill -9 pid(这个pid必须要是int)os.kill(int(pid),9)if os.path.exists(self._pidFile()): #判断pid文件是否存在os.remove(self._pidFile()) #删除print '%s is stoped...' %self.namedef restart(self):self.start()self.stop()def status(self): #判断pid,若存在就运行,不存在就停止pid=self._getPid()if pid:print '%s is running...' %self.nameelse:print '%s is stoped...' %self.namedef help(self): #__file__和shell里的$0类似,就是脚本名称print 'Usage:%s {start|stop|status|restart}' %__file__
def main(): #定义一个主函数name='memcached' #定义参数program='/usr/bin/memcached'args='-u memcached -p 11211 -c 1023 -m 64'wd='/var/tmp/memcached'pe=Program(name=name, #将类实例化才能调用构建函数program=program,args=args,workdir=wd)try: #异常处理,必须接上一个参数cmd=sys.argv[1]except IndexError,e:print 'Option error' #若没有参数,则打印sys.exit(1) #退出脚本if cmd == 'start':pe.start()elif cmd == 'stop':pe.stop()elif cmd == 'restart':pe.restart()elif cmd == 'status':pe.status()else:pe.help()if __name__=='__main__': #函数是主函数,就执行main()main()
备注:linux shell下执行命令:
cmd 为一个列表,就是将列表的执行:
命令如下
/usr/bin/memcached -u memcached -p 11211 -m 64 -c 1024 -d -P /var/run/memcached/mecached.pid
rc脚本(类的定义与脚本的结构、start方法、stop和status方法、以daemon方式启动)...相关推荐
- 脚本类恶意程序分析技巧汇总
文章目录 前言 python样本分析 打包一个hello world 关于python文件 什么是pyc文件 什么是pyo文件 什么是pyd文件 为什么需要pyc文件 关于打包的exe位数 pytho ...
- 【Groovy】Groovy 脚本调用 ( Java 类中调用 Groovy 脚本 )
文章目录 前言 一.Groovy 类中调用 Groovy 脚本 1.参考 Script#evaluate 方法分析 Groovy 类中调用 Groovy 脚本 2.创建 Binding 对象并设置 a ...
- 【Groovy】Groovy 脚本调用 ( Groovy 类中调用 Groovy 脚本 | 创建 GroovyShell 对象并执行 Groovy 脚本 | 完整代码示例 )
文章目录 一.Groovy 类中调用 Groovy 脚本 1.创建 GroovyShell 对象并执行 Groovy 脚本 2.代码示例 二.完整代码示例 1.调用者 Groovy 脚本的类 2.被调 ...
- linux脚本变量运算符,linux——Shell 脚本基础篇(变量类型,变量操作,定义,运算与逻辑关系)...
Shell 脚本基础 1.变量 什么是变量 #a=1 # echo $a 1 变量:可以变化的量 1.2变量名称注意事项 变量名不能以数字开头 不能与系统中已有的环境变量重名,尽量不要全部使用大写,尽 ...
- linux脚本怎么定义变量,Linux定义变量脚本分享
本文实例为大家分享了Linux定义变量脚本,供大家参考,具体内容如下 现有两段基本一样的代码,只是变量进行改变,其他都没有变化,但是执行过程中出现了不一样的结果 代码一: vi back.sh #ba ...
- Unity工具类扩展——UGUI代码/脚本自动化生成 (一)
[为什么要做自动化工具] 工具类的创建是为了解决实际问题或者优化既有流程,我们来先看看一些项目里面经常遇到的问题. 下面这个工具就是可以直接创建一个功能的基础脚本类,就不用每次去复制上次的代码了.然后 ...
- 【Groovy】Groovy 脚本调用 ( Groovy 类中调用 Groovy 脚本 | 参考 Script#evaluate 方法 | 创建 Binding 对象并设置 args 参数 )
文章目录 一.Groovy 类中调用 Groovy 脚本 1.参考 Script#evaluate 方法分析 Groovy 类中调用 Groovy 脚本 2.创建 Binding 对象并设置 args ...
- wincc 用c语言读取用户名,WINCC中使用C脚本获得操作记录_wincc脚本读取报警记录-C文档类资源...
WINCC中使用C脚本获得操作记录 文档号 版本|日期 页数 SIEMENS 应用范围 详述 在生产中,有很多时候需要记录操作员的操作,以便进行事故分析. 本身提供了一些对象可以产 生操作记录,但是在 ...
- 飘浮广告显示脚本类(VBS,JS双版)
在写一个项目时要用到广告模块,为了不想用ASP生成脚本代码时较麻烦,于是产生了写脚本类的念头,即是用一个类模块的脚本代码去控制所有在同一页面显示的漂浮广告.但在写的过程中发现JS脚本竟然在setTim ...
最新文章
- 深度学习浪潮下的自然语言处理,百度NeurIPS 2019展现领域新突破
- exportfs命令和FTP服务
- 关于JS 事件冒泡和onclick,click,on()事件触发顺序
- 超图iServer服务管理概述
- 解决ASP.NET AJAX在frame及iframe中跨域访问的问题
- ejb能调用另一个ejb吗_异步EJB只是一个Gi头吗?
- LeetCode 474. Ones and Zeroes 动态规划解法+拓展
- eclipse中常见快捷键
- c语言逐行存储到txt,c语言逐行读取txt文件数据
- 基于Java的连连看游戏设计与实现(含源文件)
- 2019腾讯算法广告大赛冠军方案复现遇到的问题 python
- 固态硬盘打开计算机就死机,SSD死机卡顿怎么办 固态硬盘使用详解
- 微软应用商店Ubuntu 20.04 LTS打开0x8007019e错误解决
- Air101-LCD扩展板按键测试程序
- html 5抽奖特效,利用HTML5实现Canvas大转盘抽奖特效
- 【基础】SimpleDateFormat日期格式转换详解
- 智能编程和乐高机器人的区别
- 原来,我连一个URL都写不对…
- 人类创造出来的世界——电子世界
- python requests模拟登录淘宝购物车下单_Python使用requests库模拟登录淘宝账号(上)...