rc脚本

这个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()

2. start方法