这个rc脚本练习现在看了几遍视频也不懂,仅仅是跟着视频写出代码也没啥用,留待后面回来学习吧。
1. 主脚本
类似/etc/init.d/memcached这样的是系统启动脚本,(centos7换成了systemctl)现在用Python写一个启动脚本。下面是py脚本的主要结构:
#!/usr/bin/python
# -*- coding:utf8 -*-
# author: chawn
# date:
import sys
class Process(object):# 定义类Process
# memcached rc script
# 定义内置方法,4个参数
def __init__(self,name,program,args,workdir):
self.name = name # 定义对象的属性
self.program = program # 定义对象的属性
self.args = args # 定义对象的属性
self.workdir = workdir # 定义对象的属性
def _init(self): # 下划线只有一个,所以这是定义一个普通方法。前面如果两个下划线,私有方法。前后都有2个下划线,内置方法。
def start(self): #定义开始类
def stop(self): #定义结束类
def restart(self): #定义重启类
self.stop() #调用结束类
self.start() #调用开始类
def status(self): #定义状态类
def help(self): # 定义帮助
def main(): # 和Process类一个等级,定义函数main
# 因为类的内置方法有4个参数,这里也要有4个参数
name = 'memcached'
prog = '/usr/bin/memcached'
args = '-u nobody -p 11211 -c 1024 -m 64'# 参照memcached的shell脚本
wd = '/var/tmp/memcached'
# 识别类Process,传入4个参数
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()
# 调用函数,这种方式调用是为了确保只有这个脚本执行的时候才调用main函数
if __name__ == '__main__':
main()
网友评论