当前位置: 首页 > news >正文

3.6 rc脚本(start方法) 3.7 rc脚本(stop和status方法) 3.8 rc脚本(以daemon方式启动)

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

3.6-3.7 rc脚本(start、stop和status方法)

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# [@Version](https://my.oschina.net/u/931210) : python 2.7
# [@Time](https://my.oschina.net/u/126678)    : 2018/12/10 0:54
# [@Author](https://my.oschina.net/arthor)  : zhang xun
# [@File](https://my.oschina.net/u/726396)    : rc.py
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(self.workdir)
			os.makedir(self.workdir)
			os.chdir(self.workdir)
		else :
			os.chdir(self.workdir)


	def _pidFile(self):
		'''/var/tmp/memcached/memcached.pid'''
		return os.path.join(self.workdir, "%s.pid" % self.name)

	def _withPid(self):
		if self.pid:
			with open(self._pidFile(),'w') as fd :
				fd.write(str(self.pid))
	def start(self):
		cmd = self.program + ' ' + self.args
		p = Popen(cmd,stdout=PIPE,shell=True)
		self.pid = p.pid
		self._withPid()
		print(" STARTED ! ")


	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 ("STOPED !")
	def restart(self):
		self.stop()
		self.stop()

	def status(self):
		pid = self._getPid()
		if pid :
			print (" started ")
		else :
			print (" stoped ")

3.8 rc脚本(以daemon方式启动)

转载于:https://my.oschina.net/u/4030294/blog/2985991

相关文章:

  • ThinkPHP/---ajax 改变状态实例
  • 【.NET】AutoMapper学习记录
  • Javassm连接数据库报错129 ERROR [com.alibaba.druid.pool.DruidDataSource] - {dataSource-1} init error...
  • 从AI医疗到量子计算,亚洲研究院如何成为微软发展的生命力?
  • java B2B2C Springboot仿淘宝电子商城系统--Spring Cloud Gateway
  • Rust 1.31正式发布,首次引入Rust 2018新功能
  • Centos7Yum安装配置指定版本nginx
  • SPRING 集成 activemq 的 topic 模式
  • Confluence 6 对一个空间进行归档后产生的影响
  • Docker之 数据持久化
  • webpack4 配置 vue项目
  • 开发函数计算的正确姿势 —— 排查超时问题
  • 同是容器管理系统,Kubernetes为什么那么火?
  • Beta冲刺随笔集
  • 计算机系统要素-写一个简单的编译器和操作系统
  • [deviceone开发]-do_Webview的基本示例
  • [译] React v16.8: 含有Hooks的版本
  • CentOS7 安装JDK
  • ECMAScript入门(七)--Module语法
  • Javascript弹出层-初探
  • JAVA之继承和多态
  • Markdown 语法简单说明
  • PhantomJS 安装
  • SAP云平台运行环境Cloud Foundry和Neo的区别
  • Spring Cloud中负载均衡器概览
  • vue+element后台管理系统,从后端获取路由表,并正常渲染
  • Vue2.x学习三:事件处理生命周期钩子
  • 短视频宝贝=慢?阿里巴巴工程师这样秒开短视频
  • 官方解决所有 npm 全局安装权限问题
  • 警报:线上事故之CountDownLatch的威力
  • 漫谈开发设计中的一些“原则”及“设计哲学”
  • 前言-如何学习区块链
  • 设计模式走一遍---观察者模式
  • 数据结构java版之冒泡排序及优化
  • 微信如何实现自动跳转到用其他浏览器打开指定页面下载APP
  • 中文输入法与React文本输入框的问题与解决方案
  • 带你开发类似Pokemon Go的AR游戏
  • ​LeetCode解法汇总1410. HTML 实体解析器
  • ​马来语翻译中文去哪比较好?
  • #AngularJS#$sce.trustAsResourceUrl
  • #pragma once
  • (C语言)求出1,2,5三个数不同个数组合为100的组合个数
  • (Forward) Music Player: From UI Proposal to Code
  • (Matalb分类预测)GA-BP遗传算法优化BP神经网络的多维分类预测
  • (附源码)计算机毕业设计SSM疫情社区管理系统
  • (四)库存超卖案例实战——优化redis分布式锁
  • (原創) 如何將struct塞進vector? (C/C++) (STL)
  • (原創) 系統分析和系統設計有什麼差別? (OO)
  • (转)socket Aio demo
  • **Java有哪些悲观锁的实现_乐观锁、悲观锁、Redis分布式锁和Zookeeper分布式锁的实现以及流程原理...
  • .bat批处理(五):遍历指定目录下资源文件并更新
  • .NET CF命令行调试器MDbg入门(一)
  • .NET Core 2.1路线图
  • .NET Core实战项目之CMS 第十二章 开发篇-Dapper封装CURD及仓储代码生成器实现
  • .net反编译的九款神器