首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

有没有办法编写一个脚本,每隔几分钟检查另一个python进程是否正在运行,并在必要时重新运行它?

是的,可以编写一个脚本来检查另一个Python进程是否正在运行,并在必要时重新运行它。以下是一个示例脚本:

代码语言:txt
复制
import psutil
import subprocess
import time

def check_process(process_name):
    for proc in psutil.process_iter(['name']):
        if proc.info['name'] == process_name:
            return True
    return False

def restart_process(process_name, script_path):
    if not check_process(process_name):
        subprocess.Popen(['python', script_path])

if __name__ == '__main__':
    process_name = 'your_python_process.py'
    script_path = '/path/to/your_python_script.py'
    while True:
        restart_process(process_name, script_path)
        time.sleep(300)  # 每隔5分钟检查一次

这个脚本使用了psutil库来检查进程是否正在运行。首先,check_process函数会遍历当前运行的进程,检查进程的名称是否与给定的进程名称相匹配。如果找到匹配的进程,函数将返回True,否则返回False。

restart_process函数会调用check_process函数来检查进程是否正在运行。如果进程没有运行,它将使用subprocess库启动一个新的Python进程来运行指定的脚本。

在主程序中,你可以设置要检查的进程名称和要重新运行的脚本路径。然后,使用一个无限循环来每隔一段时间调用restart_process函数来检查并重新运行进程。在上面的示例中,我设置了每隔5分钟检查一次。

请注意,这只是一个简单的示例脚本,你可以根据自己的需求进行修改和扩展。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

如何编写bash脚本以便在进程死机时重新启动进程

问: 我有一个python脚本,它将检查队列并对每个元素执行操作: # checkqueue.py while True: check_queue() do_something() 我如何编写一个...bash脚本检查是否正在运行,如果没有,则启动。...Restart..." >&2 sleep 1 done 上面的bash代码在一个until循环中运行procA。第一行启动procA并等待结束。当结束时,until检查其退出状态。...如果退出状态不是0,until将运行循环体,该循环体在STDERR上发出错误消息,并在 1 秒后重新启动循环(返回第 1 行)。 我们为什么要等一会儿?...然后需要做的就是启动这个bash脚本,它将监控procA并在必要时重新启动。如果你想在(操作系统)启动时启动监控脚本,你可以用@reboot规则在用户的 cron(1) 中调度

18720

运维定位服务故障时,前5分钟都在忙啥?

ps aux 的结果比较杂乱, pstree -a 的结果比较简单明了,可以看到正在运行进程及相关用户。...找到所有正在运行的服务,检查它们是否应该运行。查看各个监听端口。在netstat显示的服务列表中的PID 和 ps aux 进程列表中的是一样的。...如果服务器上有好几个Java或者Erlang什么的进程在同时运行,能够按PID分别找到每个进程就很重要了。 通常我们建议每台服务器上运行的服务少一点,必要时可以增加服务器。...根据这些情况可以大致了解硬件问题的来源和性能改进的办法。 网卡是否设置好? 是否运行在半双工状态? 速度是10MBps? 有没有 TX/RX 报错?...MySQL; 在mysql.log找错误消息,看看有没有结构损坏的表, 是否有innodb修复进程运行是否有disk/index/query 问题.

77820
  • Python分布式计算》 第7章 测试和调试分布式应用 (Distributed Computing with Python)概述常见错误——时钟和时间常见错误——软件环境常见问题——许可和环境常见

    许多应用需要每隔一段时间就产生进程或进行动作(例如,发送email确认或检查新的数据是否可用)。...通常,因为我们不总是控制所有使用的代码,让计时器随机延迟几分钟是可行的。 另一个例子是图片处理服务,需要给隔一段时间就检测新的数据。...另一个要考虑的是,增加了代码的复杂性,尤其是使用多个进程或线程读写状态信息。 好的方法是,可以快速重新创建的数据和结果不要写入检查点。或者,一些进程需要花费大量时间,此时使用检查点非常合适。...例如,气象模拟可能运行数周或数月。此时,每隔几个小时就写入检查点是非常重要的,因为从头开始成本太高。另外,上传图片和创建缩略图的进程运行特别快,就不需要检查点。...总结 用Python编写运行小型或中型分布式应用程序并不困难。

    76550

    为什么应该学习Python

    另一个原因是多样性,Python体验允许你比R做更多的事情,例如你可以创建脚本来自动化内容,进入Web开发等等。...我想检查是否在该盒子和端口上接收了任何UDP流量,但我找不到一个方便的UNIX命令来做到这一点。...坐在我旁边的朋友正在学习Python,他在短短5分钟内编写一个实用工具,使用了其中一个Python模块拦截UDP消息。...显然,我对他编写这样一个工具所花费的时间印象深刻,但这只是在编写脚本、工具和自动化时显示出了Python的强大功能。...对于已经了解Java或C++的程序员来说,学习Python不仅可以让你成为Polyglot程序员,还可以在工具库中为你提供一个强大的工具来编写脚本、创建一个Web应用程序,并在激动人心的数据科学和机器学习领域打开大门

    34520

    linux中暂停进程并稍后恢复

    运行一个程序。但是,你不知道需要多长时间才能完成。该过程会持续运行几分钟。你不能再等太久了,因为其他一些重要的程序正在排队等候。你有没有遇到过这样的情况?不用担心!...我刚刚发现了一个简单的技巧来暂停一个进程并稍后在 Linux 中恢复。 我要做的只是暂停当前正在运行进程,做一些其他重要的任务,然后在所有其他进程完成后恢复停止的进程。...你可以随时暂停正在运行进程并在以后恢复它们,而无需重新启动它们。现在让我们继续学习暂停或暂停正在运行进程并稍后在 Linux 和类 Unix 操作系统中恢复。...完成所有任务后,使用命令恢复停止的进程: $ kill -CONT 10901 要验证进程是否正在运行,请运行ps命令。...重新启动我的系统后它会工作吗? 重新启动系统后,进程的 PID 会自动更改。它们不会在重新启动后持续存在。在这种情况下,你可以暂停或休眠整个系统,并在准备好时恢复它们。

    3.2K20

    Python 动态加载模块以及多进程问题

    问题背景我正在编写一个 Python 包,它从配置文件中读取模块列表(以及辅助数据)。...我的理解是编写一个 clean_up 函数,在 do_work() 成功完成或者捕获到未处理的异常时调用该函数——我是否还需要做更多的事情来确保资源不会泄露或使操作系统进入不稳定状态?...问题 3如果我注释掉 t.daemon 标志语句,代码还会异步运行吗?由生成的后代执行的工作非常密集,我不想等到一个后代完成后才能生成另一个后代。...[Edit]在阅读了有关 Python 的 GIL 和 Python 中的线程(啊哼——hack)的更多内容之后,我认为最好使用单独的进程(至少 IIUC,如果有多个进程脚本可以利用它们),所以我将生成新进程而不是线程...range(10000000)))) p1.start() p2.start() r1 = q.get() r2 = q.get() return r1 + r2我该如何修改来处理模块的字典并在进程运行每个加载模块中的

    7310

    在服务器上排除问题的头五分钟(干货)

    ps aux 的结果比较杂乱, pstree -a 的结果比较简单明了,可以看到正在运行进程及相关用户。...找到所有正在运行的服务,检查它们是否应该运行。查看各个监听端口。在 netstat 显示的服务列表中的 PID 和 ps aux 进程列表中的是一样的。...如果服务器上有好几个 JAVA 或者 Erlang 什么的进程在同时运行,能够按 PID 分别找到每个进程就很重要了。 通常我们建议每台服务器上运行的服务少一点,必要时可以增加服务器。...根据这些情况可以大致了解硬件问题的来源和性能改进的办法。 网卡是否设置好? 是否运行在半双工状态? 速度是 10MBps? 有没有 TX/RX 报错?...有没有某个服务专用的文件系统? (比如 MySQL?) 文件系统的挂载选项是什么: noatime? default? 有没有文件系统被重新挂载为只读模式了? 磁盘空间是否还有剩余?

    1.1K30

    Python,还不知道main函数吗

    Python 文件导入到另一个文件 无论我们选择哪种执行模式,Python 都会定义一个名为 __name__ 的特殊变量,其中包含一个字符串。...有时当我们从模块导入时,我们想知道特定模块的函数是否被用作导入,或者只是使用该模块的原始 .py(Python 脚本)文件。...因此,如果条件语句的计算结果为 True,则意味着 .py(Python 脚本)文件正在直接运行或执行。...这样,我们将要运行的代码放在 main() 中,将编程逻辑放在一个名为 demo 的函数中,并在条件块中调用 main()。...来看一下输出: ❝可以尝试一下,如果将此代码作为脚本运行或导入,则输出将是相同的 从 main() 调用其他函数 当我们编写成熟的 Python 程序时,可能有许多可以调用和使用的函数。

    62610

    在服务器上排除问题的头 5 分钟

    四、现在在运行进程是啥? $ pstree -a $ ps aux 这都是查看现有进程的。ps aux 的结果比较杂乱, pstree -a 的结果比较简单明了,可以看到正在运行进程及相关用户。...找到所有正在运行的服务,检查它们是否应该运行。查看各个监听端口。在netstat显示的服务列表中的PID 和 ps aux 进程列表中的是一样的。...如果服务器上有好几个Java或者Erlang什么的进程在同时运行,能够按PID分别找到每个进程就很重要了。 通常我们建议每台服务器上运行的服务少一点,必要时可以增加服务器。...根据这些情况可以大致了解硬件问题的来源和性能改进的办法。 网卡是否设置好? 是否运行在半双工状态? 速度是10MBps? 有没有 TX/RX 报错?...MySQL; 在mysql.log找错误消息,看看有没有结构损坏的表, 是否有innodb修复进程运行是否有disk/index/query 问题.

    75320

    linux系统管理员需要知道的20条命令

    使用 tail -f 来跟踪日志文件并在发起请求时查看它们。 -f 选项表示跟随的意思,它可在日志被写入文件时输出它们。下面的示例具有每隔几秒访问端点的后台脚本,日志会记录请求。...使用该命令可确定正在运行的应用程序或确认预期的进程。例如,如果要检查正在运行的 Tomcat Web 服务器,可使用带有选项的 ps 来获取 Tomcat 的进程 ID。...当使用 top 命令后,您注意到一个 Python 应用程序使用了大部分的 CPU,其内存使用量也迅速攀升。当运行时,如果进程是你的应用程序,则按”C”键来查看完整命令并进行逆向工程。...与 netstat 类似,可使用 lsof 来检查侦听端口。例如,如果要检查 80 端口是否正在被使用,可使用 lsof 来检查哪个进程正在使用它。...2, 在需要重新执行的命令的指定编号前添加 ! 即可重新执行 这些基本命令能增强排查故障的专业技能,可检查为什么应用程序可以在一个开发环境中工作,而在另一个开发环境中则不可以。

    1.1K30

    在服务器上排除问题的头 5 分钟

    四、现在在运行进程是啥? $ pstree -a $ ps aux 这都是查看现有进程的。ps aux 的结果比较杂乱, pstree -a 的结果比较简单明了,可以看到正在运行进程及相关用户。...找到所有正在运行的服务,检查它们是否应该运行。查看各个监听端口。在netstat显示的服务列表中的PID 和 ps aux 进程列表中的是一样的。...如果服务器上有好几个Java或者Erlang什么的进程在同时运行,能够按PID分别找到每个进程就很重要了。 通常我们建议每台服务器上运行的服务少一点,必要时可以增加服务器。...根据这些情况可以大致了解硬件问题的来源和性能改进的办法。 网卡是否设置好? 是否运行在半双工状态? 速度是10MBps? 有没有 TX/RX 报错?...MySQL; 在mysql.log找错误消息,看看有没有结构损坏的表, 是否有innodb修复进程运行是否有disk/index/query 问题.

    27330

    带你认识Python中黑客喜欢攻击的10个安全漏洞以及应对方法

    在默认情况下,Python执行时使用的是_debug__作为true,但是在生产环境中,通常使用优化来运行。这将跳过assert语句,直接进入安全代码,而不管用户是否为is_admin。...但是,如果您有一个命令行应用程序提示输入密码,那么攻击者可以编写一个简单的脚本来计算将它们的值与实际的密码进行比较所需的时间。...这是不安全的,因为在调用mktemp()和第一个进程随后尝试创建该文件之间的时间内,另一个进程可能会创建一个具有该名称的文件。这意味着它可能欺骗您的应用程序加载错误的数据或暴露其他临时数据。...攻击者可以使用它来包含对其中一个进程模块的引用,以便在主机上运行任意命令。 解决办法: 永远不要从不可信或未经身份验证的源解除数据pickle。而是使用另一种序列化模式,比如JSON。...解决办法: 使用PyUp这样的服务。io检查更新,提出拉/合并请求到您的应用程序,并运行您的测试,以保持包的最新。

    1.5K30

    2019学习Python的10个原因

    另一个原因是多样性。Python让我们做比R更多的事情,例如,可以创建脚本来自动处理事情,进入Web开发,等等。 2、机器学习 这也是程序员在2019年学习Python另一个原因。...想象一下,在Python中用Java或Django和Fulk创建一个没有脚本的Web应用程序。使你的工作更加容易,因此你就可以专注于业务方面了。 Python有许多不同需求的库。...我正在使用一个通过UDP接收消息的应用程序,但出现了一个问题:日志中没有看到消息。 我想检查一下在那个空间和那个端口上是否接收到任何UDP通信,但是我找不到一个方便的Unix命令来完成这个问题。...坐在我旁边的一个朋友正在学习Python,他竟然在5分钟内编写一个实用程序,用一个Python模块拦截UDP消息。...我对他在短时间内能编写出来这个工具印象深刻;但这仅仅突出了Python编写脚本、工具和自动化方面的强大功能。 8、用途多 我喜欢Python一个特点是像瑞士那样的自然。

    50140

    Linux 命令行的艺术

    尽可能地使用严格模式:使用 set -e 令脚本在发生错误时退出而不是继续运行;使用 set -u 来检查是否使用了未赋值的变量;试试 set -o pipefail,它可以监测管道中的错误。...了解使用 ldd 来检查共享库。但是永远不要在不信任的文件上运行。 了解如何运用 gdb 连接到一个运行着的进程并获取的堆栈轨迹。 学会使用 /proc。它在调试正在出现的问题的时候有时会效果惊人。...如果你删除了一个文件,但通过 du 发现没有释放预期的磁盘空间,请检查文件是否进程占用: lsof | grep deleted | grep "filename-of-my-big-file" 单行脚本...好处是允许 Linux 上编写的程序在 Windows 上运行,而另一方面,Windows 上编写的程序却无法在 Bash 命令行中运行。...要在 Windows 上获取 GNU 开发者工具(比如 GCC)的另一个办法是使用 MinGW 以及的 MSYS 软件包,该软件包提供了 bash、gawk、make、grep 等工具。

    4.5K10

    一篇文章学习 linux 命令

    尽可能地使用严格模式:使用 set -e 令脚本在发生错误时退出而不是继续运行;使用 set -u 来检查是否使用了未赋值的变量;试试 set -o pipefail,它可以监测管道中的错误。...了解使用 ldd 来检查共享库。但是永远不要在不信任的文件上运行。 了解如何运用 gdb 连接到一个运行着的进程并获取的堆栈轨迹。 学会使用 /proc。它在调试正在出现的问题的时候有时会效果惊人。...如果你删除了一个文件,但通过 du 发现没有释放预期的磁盘空间,请检查文件是否进程占用: lsof | grep deleted | grep "filename-of-my-big-file" 单行脚本...好处是允许 Linux 上编写的程序在 Windows 上运行,而另一方面,Windows 上编写的程序却无法在 Bash 命令行中运行。...要在 Windows 上获取 GNU 开发者工具(比如 GCC)的另一个办法是使用 MinGW 以及的 MSYS 软件包,该软件包提供了 bash、gawk、make、grep 等工具。

    2.2K22

    有用的内置Node.js APIs

    「OS」:检索Node正在运行的操作系统和系统相关信息。比如CPU、操作系统版本、主目录等等。 「Util」:有用和常见方法的集合。用于帮助解码文本、类型检查和对比对象。...「Child Processes」:允许你运行进程,你可以监控并在必要时终止子进程。 「Clusters」:允许你跨核fork任何数量的相同进程,以更有效地处理负载。...该问题通过在子进程运行散列算法最终被解决。Express应用程序保持稳定,因为启动、监控并在计算时间过长时终止了计算。...exec:生成shell并运行一条命令。运行结果被缓冲,当进行结束时返回一个回调函数。 不像worker线程,子进程独立于Node.js主脚本,并且无法访问相同的内存。...Clusters 当你的Node.js应用程序在单核上运行时,你的64核服务器CPU是否没有得到充分利用?Cluster[21]允许你fork任何数量的相同进程来更有效地处理负载。

    2.2K20

    BPF 和 Go: Linux 中的现代内省形式

    中断是一个事件;通过网络接收数据包是一个事件;将处理器的控制权转移到另一个进程一个事件;运行函数也是一个事件。...是的,所以 BPF 是 Linux 内核的一个子系统,使你有机会编写一些由内核运行以响应事件的小程序。这些程序既可以帮忙你了解系统正在发生什么,也可以用来控制系统。...他增加了寄存器的数量和程序允许的大小,添加了 JIT 编译,并创建了一个用于检查程序是否安全的检查器。...首先,我们有一个 BPF 程序,如果通过验证,就会被加载到内核中。在那里,它将被 JIT 编译器编译成机器码,并在内核模式下运行,这时附加的触发器将会被激活。...当处理异常时,C++ 栈拆分器也会每隔一段时间就崩溃一次。 这个问题没有解决的办法。像往常一样,在这种情况下,双方都会相互指责对方,并各自都能提出完全有根据的论点。

    70630

    Waiting for cache lock: Could not get lock varlibdpkglock-frontend. It is...

    完成此锁定是为了让两个进程不会同时更改内容,因为这可能会导致不必要的情况和可能损坏的系统。处理办法分析:第一件事是检查是否有其他程序正在运行系统更新或安装程序。...如果使用的是命令行,请检查软件中心、软件更新程序、Synaptic 包管理器、Gdebi 等应用程序是否正在运行任何更新/安装。 如果是这种情况,请等待程序完成运行过程。...如果没有运行此类应用程序,请检查所有打开的终端窗口,看看是否正在运行更新或安装程序。 如果是,请等待完成。如果以上都没有发生,请检查哪个其他进程正在运行 apt 命令(用于处理软件的包管理器)。...这是一个在后台运行的守护进程并在启动系统时自动检查系统更新。在 Ubuntu 18.04 及更高版本中,甚至可能会尝试自行下载并安装重要的安全更新。..."0";APT::Periodic::Unattended-Upgrade "0";处理办法2把这些更新进程kill掉,或者等他们完成。

    12.2K20
    领券