首页 > 编程语言 >python 监控一个程序是否启动, 启动就关掉这个程序

python 监控一个程序是否启动, 启动就关掉这个程序

时间:2023-08-11 18:36:10浏览次数:99  
标签:name 启动 python 程序 subprocess process program proc

要监控一个程序是否启动,并在启动后关闭该程序,可以使用Python的subprocess模块来实现。

下面是一个示例代码:

import subprocess
import time
​
def check_and_close_program(program_name):
  process = subprocess.Popen(["pgrep", program_name], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
  stdout, stderr = process.communicate()
  if process.returncode == 0:
      print(f"{program_name} is running, closing it...")
      subprocess.call(["pkill", program_name])
  else:
      print(f"{program_name} is not running")
​
# 要监控的程序名称
program_name = "example_program"
​
while True:
  check_and_close_program(program_name)
  time.sleep(1) # 每隔1秒检查一次

 

在上面的代码中,首先定义了一个check_and_close_program函数,该函数通过调用pgrep命令来检查程序是否正在运行。如果程序正在运行,就调用pkill命令来关闭该程序。

然后,在主循环中,不断调用check_and_close_program函数来监控程序是否启动,并在启动后关闭该程序。通过使用time.sleep(1)来控制每次检查的间隔时间。

你需要将代码中的example_program替换为你要监控的程序的名称。

 

还可以使用Python的psutil模块来实现。

下面是一个示例代码:

import psutil
import time

def kill_process(process_name):
    proc_dict = {}
    for proc in psutil.process_iter():
        proc_dict[proc.name()] = proc

    if proc_dict.get(process_name):
        proc_dict.get(process_name).kill()
        print(f"进程 {process_name} 已被强制关闭")
    else:
        print(f"进程 {process_name} 未启动")


# 调用函数关闭指定进程
process_name = "shang.exe"  # 替换为你要关闭的进程的名称

while True:
    kill_process(process_name)
    time.sleep(1)  # 每隔1秒检查一次

 

 

标签:name,启动,python,程序,subprocess,process,program,proc
From: https://www.cnblogs.com/shangwei/p/17623693.html

相关文章

  • 解锁Python集合的妙用:常用函数与实例深度解析
    Python的集合(Set)是一种无序且不重复的数据结构,拥有强大的去重和集合运算功能。在这篇博客中,我们将深入探讨集合的常用函数,并通过实际案例为你展示其灵活应用。创建集合集合可以通过花括号来创建,也可以使用内置函数set()来转换其他可迭代对象为集合。#创建集合my_set={1,2,3}......
  • python3 定时处理任务的问题?
    作者:27RRRR链接:https://www.zhihu.com/question/30944800/answer/2317117095来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。如果你想在Linux服务器上周期性地执行某个Python脚本,最出名的选择应该是Crontab脚本,但是Crontab具有以下缺点:1.不......
  • 通过python的pymongo连接MongoDB数据库最新方式
    首先导入需要的模块功能fromurllibimportparsefrompymongoimportMongoClient使用pymongo的客户端进行链接self.host="168.9.5.27"self.port=27017self.user="Mr.baba"self.password="PLA_No.1"......
  • Android应用程序组件Content Provider应用实例
     上文简要介绍了Android应用程序组件ContentProvider在应用程序间共享数据的原理,但是没有进一步研究它的实现。本文将实现两个应用程序,其中一个以ContentProvider的形式来提供数据访问入口,另一个通过这个ContentProvider来访问这些数据。本文的例子不仅可以为下文分析ContentP......
  • Python黑魔法 --- 协程分解与封装
    Python黑魔法---异步IO(asyncio)协程pythonasyncio网络模型有很多中,为了实现高并发也有很多方案,多线程,多进程。无论多线程和多进程,IO的调度更多取决于系统,而协程的方式,调度来自用户,用户可以在函数中yield一个状态。使用协程可以实现高效的并发任务。Python的在3.4中引入了......
  • python 常用的案例1
          pythonPython中文转拼音代码(支持全拼和首字母缩写)by Crazyant本文的代码,从https://github.com/cleverdeng/pinyin.py升级得来,针对原文的代码,做了以下升级: 1、可以传入参数firstcode:如果为true,只取汉子的第一个......
  • python案例2
         pythonpython子类调用父类的方法by Crazyantpython和其他面向对象语言类似,每个类可以拥有一个或者多个父类,它们从父类那里继承了属性和方法。如果一个方法在子类的实例中被调用,或者一个属性在子类的实例中被访问,但是该方法或属性在子类中并不存在,那么就会......
  • python优雅地爬虫
    我需要获得新闻,然后tts,在每天上班的路上可以听一下。具体的方案后期我也会做一次分享。先看我喜欢的万能的老路:获得html内容->python的工具库解析,获得元素中的内容,完成。好家伙,我知道我爬取失败了。一堆js代码,看得我烦。我一去看页面发现:原来新闻的获得是走的接口,然后js插......
  • python多进程运行
    多进程并行的模块:multiprocessingultiprocessing包的详解需要涉及到以下几个方面:进程类(Process):这是multiprocessing包的核心类,它用于创建和管理一个进程。进程类接受一个target参数,指定要在进程中执行的函数,以及一个args参数,指定要传递给函数的参数。进程类还有一些方法和属性,......
  • C++使用Py*调用Python3模块中类成员函数及数组参数传递
    1.首先来看Python模块的部分结构和代码。ssd_network_classify.py文件中有SSD_Network_Classify类及其识别的成员函数detect_image(),返回值是一个1维的不定长double型数组。classSSD_Network_Classify:#其他函数实现省略。。。defdetect_image(sel......