温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何实现Python启动、停止脚本

发布时间:2021-11-08 10:01:46 来源:亿速云 阅读:354 作者:小新 栏目:云计算

这篇文章给大家分享的是有关如何实现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启动、停止脚本”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI