rc脚本

作者: C1awn_ | 来源:发表于2018-01-14 20:35 被阅读0次

    这个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方法

    相关文章

      网友评论

          本文标题:rc脚本

          本文链接:https://www.haomeiwen.com/subject/idwkoxtx.html