`
mmBlue
  • 浏览: 167721 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Python启动、停止脚本

 
阅读更多
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import platform,os
import time
import subprocess
import sys
import ctypes

def get_sysinfo():
    sys = platform.system()
    return os.getpid(),sys
    
def get_path():
    p=os.path.split(os.path.realpath(__file__))  # ('D:\\workspace\\python\\src\\mysql', 'dao.py')
    p=os.path.split(p[0])
    if not p:
        os.mkdir(p)
    return p[0]

def get_pid_path():
    return get_path() +'/tmp/yqs.pid'

def check_pid(pid = 0,osname=''):
    if pid is None or pid == 0:
        return False
    wincmd = 'tasklist /FI "PID eq %s"  /FI "IMAGENAME eq python.exe "' % str(pid)
    lincmd = 'ps ax |grep %s |grep python' % str(pid)
    cmd,size = (wincmd,150) if osname=='Windows' else (lincmd,20)
    returnstr=subprocess.Popen(cmd,stdout=subprocess.PIPE,stderr=subprocess.PIPE, shell=True)
    data = returnstr.stdout.read()
    return len(data) > size
    
def read_pid():
    if os.path.exists(get_pid_path()):
        try:
            with open(get_pid_path(),'r') as f:
                strpid = f.readline().strip()
                return int(strpid)
        except Exception :
            return None
    return None

def rm_pid():
    if os.path.exists(get_pid_path()):
        os.remove(get_pid_path())
        
def kill(pid):
    """kill function for Win32"""
    kernel32 = ctypes.windll.kernel32
    handle = kernel32.OpenProcess(1, 0, pid)
    return (0 != kernel32.TerminateProcess(handle, 0))
        
def check_run():
    pid,osname = get_sysinfo()
    if not os.path.exists(get_pid_path()):
        with open(get_pid_path(),'w') as f: f.write(str(pid))
        return False
    
    ''' 开始检查 '''
    rs = check_pid(read_pid(),osname)
    if not rs : 
        with open(get_pid_path(),'w') as f: f.write(str(pid))
    return rs
        
class Control :
    def start(self):
        if check_run():
            print 'pro has run'
        else :
            print 'pro start...'
            time.sleep(1000)
    
    def stop(self):
        filePid = read_pid()
        if filePid is not None and filePid > 0:
            print 'pro has kill %s' % filePid
            kill(filePid)
            rm_pid()
        else :
            print 'Process has closed'
            
    def check(self):
        filePid = read_pid()
        if not filePid or not check_run() :
            message = "Process has closed\n"
            sys.stderr.write(message)
        else :
            message = "The process has been run, the process id:%d\n"
            sys.stderr.write(message % filePid)
                
    def helpInfo(self):
        print "usage: start|stop|check|help"
                            
if __name__ == "__main__":
    contr=Control()
    if len(sys.argv) == 2:
        param = sys.argv[1]
        if 'start' == param:
            contr.start()
        elif 'stop' == param:
            contr.stop()
        elif 'check' == param:
            contr.check()
        elif 'help' == param:
            contr.helpInfo() 
        else:
            print r"not yes cmd"
            sys.exit(2)
    else:
        print "usage: %s start|stop|check|help" % sys.argv[0]                

 

使用方法: python xxx.py start/stop 

分享到:
评论

相关推荐

    Alist安装包+快速启动-停止脚本

    标题中的"Alist安装包+快速启动-停止脚本"表明这个压缩包包含了Alist的安装程序以及用于快速启动和停止Alist服务的脚本,这对于用户的日常使用和维护来说非常实用。 首先,我们需要了解Alist的基本工作原理。Alist...

    对Python定时任务的启动和停止方法详解

    ### Python定时任务的启动与停止方法详解 在Python开发中,定时任务是非常常见的需求之一,尤其是在后台服务或自动化脚本中。Python社区提供了多种库来实现定时任务,其中较为流行的是`APScheduler`。本文将详细...

    基于python的monkey自动化脚本

    Python可以通过`subprocess`模块调用ADB命令,例如启动、停止应用,发送Monkey事件等。 2. **安装依赖**:在Python环境中,需要安装`adb`库,它可以提供一个Python接口来与ADB通信。你可以使用`pip install adb`...

    Python-监视GPU访问的Python脚本

    3. **程序管理**:脚本可能会根据GPU的状态启动、停止或者调整依赖GPU的外部应用程序。例如,当GPU空闲时启动一个训练任务,或者在GPU负载过高时暂停任务以防止过热或资源浪费。 4. **日志记录**:为了便于分析和...

    python定时提醒以及vbs脚本

    Python用于设定定时任务并启动提醒音乐,VBScript用于弹出消息和停止音乐播放。这样的组合既利用了Python的强大功能,也兼顾了VBScript在Windows环境下的便捷性,为用户提供了个性化的定时提醒方案。

    ros2脚本实例,shell脚本和python脚本示例

    通过shell脚本,开发者可以方便地调度ROS2命令,如启动节点、运行测试、管理ROS2环境等。而Python脚本则提供了更高级的编程能力,适合编写复杂的逻辑和算法。在ROS2中,shell脚本通常用于系统级的管理和部署任务,而...

    Ubuntu下后台持续运行Python程序

    本文将深入探讨如何在Ubuntu环境下实现这一目标,并提供配套的启动和停止脚本。 首先,我们需要理解在Linux系统中,后台运行进程的基本概念。通常,当我们在终端中执行一个命令,该命令会在当前的shell会话中运行,...

    点击bat自动部署本地jar包到服务器并启动(含源码python)

    标题 "点击bat自动部署本地jar包到服务器并启动(含源码python)" 描述了一个自动化部署流程,其中涉及到了Windows操作系统、批处理脚本(BAT文件)以及Python编程语言。这个过程的主要目的是通过简单的点击操作,...

    使用python脚本启动一个文件服务器

    要运行这些脚本,只需在命令行中定位到脚本所在目录,然后执行相应的Python命令: - 对于Python 2:`python http_server_python2.py` - 对于Python 3:`python3 http_server.py` 启动服务器后,你可以通过浏览器...

    自动重启Tomcat脚本

    如果发现Tomcat未运行,脚本会调用Tomcat的启动命令,如`startup.bat`,来重启服务器。 在描述中提到的"注意重新设定端口号",这意味着在部署多实例Tomcat或者与其他服务共存的环境中,为了避免端口冲突,需要对每...

    MFC调用Python示例

    本示例中的“MFC调用Python”就是一种这样的实践,它展示了如何在Microsoft Foundation Classes (MFC)的C++环境中调用Python脚本来执行特定任务,如文件的读写操作。MFC是微软提供的一套C++类库,用于构建Windows...

    linux性能监控与图像显示脚本(shell&python;)

    1)启动性能监控脚本,cpu与memory信息记录于文件中。 ./watch_start runtime filePrefix runtime暂时为运行次数。根据runtime计算最佳统计间隔和次数的模块未实现。 记录文件名:filePrefix_timestamp_cpu.txt 或 ...

    python自动安装mysql

    - 通常,可以通过`/etc/init.d`目录下的服务脚本来控制MySQL服务的启动、停止等操作。 ```python os.system('cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld') os.system('export PATH=$PATH:...

    Python-把任何循环的ps1脚本转成一个Windows服务

    这里,我们关注的是如何使用Python来实现这一功能,特别是将一个包含循环的`.ps1`(PowerShell)脚本转化为Windows服务。在Python中,我们可以借助`nssm`(Non-Sucking Service Manager)或者`pywin32`库来完成这项...

    win10下自动运行python程序脚本(csdn)————程序.pdf

    本文将详细介绍如何设置系统任务计划,使得Python脚本能够自动执行。 首先,你需要编写一个简单的Python程序,例如`test.py`。为了让Python窗口不立即关闭,可以在代码中加入一个无限循环,例如: ```python while...

    快捷运维,代号kjyw,项目基于shell、python,运维脚本工具库,收集各类运维常用工具脚本,实-kjyw.zip

    3. **服务管理**:一键启动、停止或重启系统服务,如Nginx、MySQL等。 4. **定时任务**:使用`cron`配合Shell脚本执行周期性任务,如定期备份、清理临时文件。 5. **网络诊断**:检查网络连接、端口状态,进行网络...

    解决PyCharm的Python.exe已经停止工作的问题

    今天遇到一个问题,就是用pycharm运行python程序,老是会出现Python.exe已停止的对话框。后来我到处在网上搜原因,网上给出的解决办法也有很多种。最终帮我解决问题的就是:打开网络防火墙,把相应的Python.exe,...

    java通过Python命令执行datax任务调度

    1、通过java调用Python命令执行datax任务调度 2、自动开始任务和调度结束关闭任务调度释放内存 3、如果我们在cmd使用命令调度,执行完毕后无法释放内存,会造成内存泄露不足,出现报错“Error occurred during ...

    python启动应用程序和终止应用程序的方法

    ### Python启动和终止应用程序的方法详解 #### 一、引言 在日常工作中,我们经常会遇到需要频繁启动或关闭某些应用程序的情况。例如,在开始一天的工作时,我们需要开启一系列工具软件;而在结束工作之前,则需要...

Global site tag (gtag.js) - Google Analytics