Python2—0715笔记

rc脚本(start方法)

rc脚本(stop和status方法)

rc脚本(以daemon方式启动)


rc脚本(start方法)

代码

#!/usr/bin/env python

import sys

import os

from subprocess import Popen, PIPE

class Process(object):

    '''memcached rc script'''

    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):

        if self.pid:

            with open(self._pidFile(),'w') as fd:

                fd.write(str(self.pid))

    def start(self):

        self._init()

        cmd = self.program + '' + self.args

        p = Popen(cmd, stdout=PIPE, shell=True)

        self.pid = p.pid        

        self._writePid()

        print "%s start Sucesful" % self.name

    def stop(self):

    def restart(self):

        self.stop()

        self.start()

    def status(self):

    def help(self):

def main():

    name = 'memcached'

    prog = '/usr/bin/memcached'

    args = '-u nobody -p 11211 -c 1024 -m 64'

    wd = 'var/tmp/memcached'

        self.pid = p.pid

        self._writePid()

        print "%s start Sucesful" % self.name

    def stop(self):

        pass

    def restart(self):

        self.stop()

        self.start()

    def status(self):

        pass

    def help(self):

        pass

def main():

    name = 'memcached'

    prog = '/usr/bin/memcached'

    args = ' -u nobody -p 11211 -c 1024 -m 64'

    wd = '/var/tmp/memcached'

    pm = Process(name = name,

                 program = prog,

                 args = args,

                 workdir = wd)

args = ' -u nobody -p 11211 -c 1024 -m 64'  -u前需要加空格


输出


rc脚本(stop和status方法)

stop

通过pidof查看pid

代码

#!/usr/bin/env python

import sys

import os

from subprocess import Popen, PIPE

class Process(object):

    '''memcached rc script'''

    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):

        if self.pid:

            with open(self._pidFile(),'w') as fd:

                fd.write(str(self.pid))

    def start(self):

        self._init()

        cmd = self.program + '' + self.args

        p = Popen(cmd, stdout=PIPE, shell=True)

        self.pid = p.pid

        self._writePid()

        print "%s start Sucesful" % self.name

    def _getPid(self):

        p = Popen(\['pidof', self.name\], stdout=PIPE)

        pid = p.stdout.read().strip()

        return pid

    def stop(self):

        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):

        self.stop()

        self.start()

    def status(self):

        pass

    def help(self):

        pass

def main():

    name = 'memcached'

    prog = '/usr/bin/memcached'

    args = ' -u nobody -p 11211 -c 1024 -m 64'

    wd = '/var/tmp/memcached'

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

if \_\_name\_\_ ==  '\_\_main\_\_':

    main()

输出

status

代码

#!/usr/bin/env python

import sys

import os

from subprocess import Popen, PIPE

class Process(object):

    '''memcached rc script'''

    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):

        if self.pid:

            with open(self._pidFile(),'w') as fd:

                fd.write(str(self.pid))

    def start(self):

        self._init()

        cmd = self.program + '' + self.args

        p = Popen(cmd, stdout=PIPE, shell=True)

        self.pid = p.pid

        self._writePid()

        print "%s start Sucesful" % self.name

    def _getPid(self):

        p = Popen(\['pidof', self.name\], stdout=PIPE)

        pid = p.stdout.read().strip()

        return pid

    def stop(self):

        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):

        self.stop()

        self.start()

    def status(self):

        pid = self._getPid()

        if pid:

            print "%s is already running" % self.name

        else:

            print "%s is not running" % self.name

    def help(self):

        pass

def main():

    name = 'memcached'

    prog = '/usr/bin/memcached'

    args = ' -u nobody -p 11211 -c 1024 -m 64'

    wd = '/var/tmp/memcached'

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

if \_\_name\_\_ ==  '\_\_main\_\_':

    main()

输出

help

代码

#!/usr/bin/env python

import sys

import os

from subprocess import Popen, PIPE

class Process(object):

    '''memcached rc script'''

    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):

        if self.pid:

            with open(self._pidFile(),'w') as fd:

                fd.write(str(self.pid))

    def start(self):

        self._init()

        cmd = self.program + '' + self.args

        p = Popen(cmd, stdout=PIPE, shell=True)

        self.pid = p.pid

        self._writePid()

        print "%s start Sucesful" % self.name

    def _getPid(self):

        p = Popen(\['pidof', self.name\], stdout=PIPE)

        pid = p.stdout.read().strip()

        return pid

    def stop(self):

        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):

        self.stop()

        self.start()

    def status(self):

        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|status|restart}" % __file__

def main():

    name = 'memcached'

    prog = '/usr/bin/memcached'

    args = ' -u nobody -p 11211 -c 1024 -m 64'

    wd = '/var/tmp/memcached'

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

if __name__ ==  '__main__':

    main()

file 内置变量,表示脚本本身

输出


rc脚本(以daemon方式启动)

debug重复启动问题

代码

#!/usr/bin/env python

import sys

import os

from subprocess import Popen, PIPE

class Process(object):

    '''memcached rc script'''

    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):

        if self.pid:

            with open(self._pidFile(),'w') as fd:

                fd.write(str(self.pid))

    def start(self):

        pid = self.getPid()

        if pid:

            print "%s is running..." % self.name

            sys.exit()

        self._init()

        cmd = self.program + '' + self.args

        p = Popen(cmd, stdout=PIPE, shell=True)

        self.pid = p.pid

        self._writePid()

        print "%s start Sucesful" % self.name

    def _getPid(self):

        p = Popen(\['pidof', self.name\], stdout=PIPE)

        pid = p.stdout.read().strip()

        return pid

    def stop(self):

        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):

        self.stop()

        self.start()

    def status(self):

        pass

    def help(self):

        pass

def main():

    name = 'memcached'

    prog = '/usr/bin/memcached'

    args = ' -u nobody -p 11211 -c 1024 -m 64'

    wd = '/var/tmp/memcached'

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

if \_\_name\_\_ ==  '\_\_main\_\_':

    main()

输出

pid不会改变

以deamon方式运行 后台运行

代码

#!/usr/bin/env python

import sys

import os

from subprocess import Popen, PIPE

class Process(object):

    '''memcached rc script'''

    args = {'USER': 'memcached',

            'PORT': 11211,

            'MAXCONN': 1024,

            'CACHESIZE': 64,

            'OPTIONS': ''}  

    def \_\_init\_\_(self, name, program, workdir):

        self.name = name

        self.program = program

        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):

        if self.pid:

            with open(self._pidFile(),'w') as fd:

                fd.write(str(self.pid))

    def _readConf(self, f):

        with open(f) as fd:

            lines = fd.readlines()

            return dict(\[i.strip().relplace('"','').plict('=')for i in lines\])

    def _parseArgs(self):

        conf = self._readConf('/etc/sysconfig/memcached')

        if 'USER' in conf:

            self.args\['USER'\] = conf\['USER'\]

        if 'PORT' in conf:

            self.args\['PORT'\] = conf\['PORT'\]

        if 'MAXCONN' in conf:

            self.args\['MAXCONN'\] = conf\['MAXCONN'\]

        if 'CACHESIZE' in conf:

            self.args\['CACHESIZE'\] = conf\['CACHESIZE'\]

        options = \['-u', self.args\['USER'\],

                   '-p', self,args\['PORT'\],

                   '-m', self.args\['CACHESIZE'\],

                   '-c', self.args\['MAXCONN'\]\]

        os.system("chown %s %s” % (self.args\[‘USER’\], self.workdir))

        return options

    def start(self):

        pid = self._getPid()

        if pid:

            print "%s is running..." % self.name

            sys.exit()

        self._init()

        cmd = \[self.program\] +  self.parseArgs() + \['-d’,’-P’, self._pidFile()\]

        print cmd

        p = Popen(cmd, stdout=PIPE)

        #self.pid = p.pid

        #self._writePid()

        print "%s start Sucesful" % self.name

    def _getPid(self):

        p = Popen(\['pidof', self.name\], stdout=PIPE)

        pid = p.stdout.read().strip()

        return pid

    def stop(self):

        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):

        self.stop()

        self.start()

    def status(self):

        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|status|restart}" % \_\_file\_\_

def main():

    name = 'memcached'

    prog = '/usr/bin/memcached'

    wd = '/var/tmp/memcached'

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

if \_\_name\_\_ ==  '\_\_main\_\_':

    main()

转载于:https://my.oschina.net/u/3959701/blog/3074671

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值