python启动脚本
来源:互联网 发布:nginx 跳转到指定ip 编辑:程序博客网 时间:2024/06/05 23:08
以服务memcached为例,用python写一个启动脚本,实现start,stop,restart,status,help等功能。
[root@js python]# cat rc.memcached.py#!/usr/bin/env pythonimport sysfrom subprocess import Popen,PIPEimport osclass Process(object): '''memcached rc scripts''' 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 already 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 is success" %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 running" %self.name else: print "%s is stopped" %self.name def help(self): print "Usage:%s {start|stop|restart|status}" %__file__def main(): name = 'memcached' program = '/usr/bin/memcached' args = '-u nobody -p 11211 -c 1024 -m 64' workdir = '/var/tmp/memcached' pm =Process(name=name, program=program, args=args, workdir=workdir) 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()
测试一下:
[root@js python]# python rc.memcached.py start //启动memcached is already running[root@js python]# ps -ef |grep memcached //查看pid496 1656 1 0 07:31 ? 00:00:00 /usr/bin/memcached -u memcached -p 11211 -m 64 -c 1024 -d -P /var/tmp/memcached/memcached.pidroot 1672 1497 0 07:37 pts/0 00:00:00 grep memcached[root@js python]# cat /var/tmp/memcached/memcached.pid1656 //pid文件[root@js python]# python rc.memcached.py stop //停止memcached is stopped[root@js python]# python rc.memcached.py status //状态memcached is stopped[root@js python]# python rc.memcached.py dhas//输错会提示help信息Usage:rc.memcached.py {start|stop|restart|status}
阅读全文
0 0
- python启动脚本
- Elasticsearch python 启动脚本
- python脚本中启动另一个python脚本
- 开启自启动python脚本
- linux开机启动python脚本
- Python脚本启动Java服务
- 配置定时启动python 脚本
- 树莓派开机启动python脚本
- spark 上python启动脚本
- python启动脚本--daemon形式
- python 脚本作为Windows服务启动
- python 脚本作为Windows服务启动
- python 脚本作为Windows服务启动
- 用Python实现开机延迟启动脚本
- python脚本当作Linux中的服务启动
- 【笔记】配置Python脚本自启动服务
- win命令启动程序python脚本
- Python 启动/停止脚本(后台服务)
- 徽章系列4: Circle CI 的使用
- 外观设计模式
- 24.Android-实现黑名单电话拦截
- POJ 3111 K Best(二分——最大化平均值)
- jsonp的概念与使用
- python启动脚本
- Qt 常用类 (4)—— QPoint
- 正则表达式30分钟入门教程
- Linux-swift
- spring+dao+jdbctemplate+datasource配置开发样例
- 使用caffe的python接口预测多张图片
- C语言各种排序算法
- MySQL 复制架构之双主模型
- Qt 常用类(5)—— QSize