python脚本杀死并启动自身

2023-12-06

我想在一小时内达到指定时间时启动 python 脚本的新实例并杀死当前实例。 python 脚本使用 crontab 在启动时自动启动。无限 while 循环读取数据。如果在第 59 秒 30 和第 59 秒 59 之间有数据传入,则文件将关闭,我希望脚本使用新的进程 ID 启动自身的新实例并终止旧进程。目前我正在通过使用来做到这一点

  subprocess.call(['python', '/home/pi/script.py'])
  sys.exit(1)

这会启动 python 脚本的一个新实例,但当我使用以下命令检查进程时,旧实例仍然可见并且(似乎)处于活动状态top.

有没有更好的方法让程序在python脚本内启动并杀死自己?

另一种方法使用 python 脚本调用的 bash 脚本:

#!/bin/sh

PID=`ps -eaf | grep python | grep -v grep | awk '{print $2}'`
if [[ "" !=  "$PID" ]]; then
  echo "killing $PID"
  kill -9 $PID
  sleep 1
  sudo python /home/pi/readserial_V4_RP.py &
  exit 1
fi

但这是行不通的,因为 python 脚本在 bash 脚本杀死它之前就结束了。我可以启动 python 脚本而无需杀死python进程,但是在启动 python 脚本的新实例之前,如何确定没有 python 脚本正在运行。

因为我有一种感觉,当我运行多个相同的 python 脚本时,第一个启动的脚本正在执行所有“工作”,而其他脚本则处于空闲状态......


不要让进程尝试自行重新启动,而是使用一个运行真实脚本的瘦父脚本。每当脚本退出时,父监视器都会重新启动该脚本。由于父级会等到子级完全退出,因此您不会运行多个版本。在完整的实现中,父级保存您需要的任何系统守护程序代码,而子级则专注于任务。

此示例运行一个非常无聊的程序,该程序会休眠命令行指定的秒数

import multiprocessing
import time
import sys
import os
import traceback

def the_real_work_done_here(sleep_time):
    try:
        print(os.getpid(), 'start work')
        time.sleep(sleep_time)
        print(os.getpid(), 'end work')
        exit(0)
    except Exception:
        traceback.print_exc()
        exit(2)

def monitor(sleep_time):
    while 1:
        proc = multiprocessing.Process(target=the_real_work_done_here,
            args=(sleep_time,))
        proc.start()
        proc.join()
        if proc.exitcode != 0:
            print('something went wrong... terminating')
            exit(proc.exitcode)


if __name__ == '__main__':
    try:
        sleep_time = int(sys.argv[1])
        monitor(sleep_time)
    except (KeyError, ValueError):
        print('usage: test.py sleeptime')
        exit(1)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python脚本杀死并启动自身 的相关文章

  • Google App Engine queue.yaml 无法在开发服务器中工作

    我无法让 dev appserver py 识别我使用queue yaml 创建的自定义队列 他们没有出现在http localhost 8000 taskqueue http localhost 8000 taskqueue 当我尝试向其
  • 使用 matplotlib 从“列表列表”绘制 3D 曲面

    我已经搜索了一些 虽然我可以找到许多有用的网格网格示例 但没有一个清楚地表明我如何将列表列表中的数据转换为可接受的形式 以适应我所讨论的各种方式 当谈到 numpy matplotlib 以及我所看到的建议的术语和步骤顺序时 我有点迷失 我
  • Python 3 os.urandom

    在哪里可以找到完整的教程或文档os urandom 我需要获得一个随机 int 来从 80 个字符的字符串中选择一个字符 如果你只需要一个随机整数 你可以使用random randint a b 来自随机模块 http docs pytho
  • 如何在Python中流式传输和操作大数据文件

    我有一个相对较大 1 GB 的文本文件 我想通过跨类别求和来减小其大小 Geography AgeGroup Gender Race Count County1 1 M 1 12 County1 2 M 1 3 County1 2 M 2
  • 用缺失的日期填充其他列 Nan Pandas DataFrame

    我实际上是从几个 Excel 文件中提取数据来监控我的每日卡路里摄入量 我设法使用列表理解来生成日期 我尝试使用合并或连接 但它不起作用 ValueError 您正在尝试合并对象和 float64 列 date list 2021 05 2
  • 补丁 - 为什么相对补丁目标名称不起作用?

    我已经从模块导入了一个类 但是当我尝试修补类名而不使用模块作为前缀时 出现类型错误 TypeError Need a valid target to patch You supplied MyClass 例如 以下代码给出了上述错误 imp
  • 保留完整姓氏,在 pandas 列中获取名字的首字母(如果有的话,还有中间名)

    我有一个 pandas 数据框 其中有一列表示几位网球运动员的姓氏和姓名 如下所示 Player 0 Roddick Andy 1 Federer Roger 2 Tsonga Jo Wilfred 我想保留完整的姓氏并获取姓名的首字母和中
  • 如何在Python中同时运行两只乌龟?

    我试图让两只乌龟一起移动 而不是一只接着另一只移动 例如 a turtle Turtle b turtle Turtle a forward 100 b forward 100 但这只能让他们一前一后地移动 有没有办法让它们同时移动 有没有
  • Python3.0 - 标记化和取消标记化

    我正在使用类似于以下简化脚本的内容来解析较大文件中的 python 片段 import io import tokenize src foo bar src bytes src encode src io BytesIO src src l
  • 如果未引发异常,则通过 Python 单元测试

    在Python中unittest框架 是否有一种方法可以在未引发异常的情况下通过单元测试 否则会因 AssertRaise 而失败 如果我正确理解你的问题 你could做这样的事情 def test does not raise on va
  • 如何使用文本相似性删除 pandas 数据框中相似(不重复)的行?

    我有数千个数据 这些数据可能相似也可能不相似 使用 python 的默认函数 drop duplicates 并没有真正的帮助 因为它们只检测相似的数据 例如 如果我的数据包含类似以下内容怎么办 嗨 早上好 嗨 早上好 Python 不会将
  • 结构差异 sudo() run('sudo 命令')

    我想知道函数之间有什么区别sudo 和函数run sudo u user smth 文档上有 sudo 在所有运行方式上都是相同的 除了它总是换行 调用 sudo 程序中的给定命令以提供超级用户 特权 但有几次 sudo cmd 提示我输入
  • 用 python 编写的数学语法检查器

    我需要的只是使用 python 检查字符串是否是有效的数学表达式 为了简单起见 假设我只需要 运算符 也作为一元 带有数字和嵌套括号 为了完整性 我还添加了简单的变量名称 所以我可以这样测试 test 3 2 1 valid test 3
  • Python:IndexError:修改代码后列表索引超出范围

    我的代码应该提供以下格式的输出 我尝试修改代码 但我破坏了它 import pandas as pd from bs4 import BeautifulSoup as bs from selenium import webdriver im
  • ANTLR 获取并拆分词法分析器内容

    首先 对我的英语感到抱歉 我还在学习 我为我的框架编写 Python 模块 用于解析 CSS 文件 我尝试了 regex ply python 词法分析器和解析器 但我发现自己在 ANTLR 中 第一次尝试 我需要解析 CSS 文件中的注释
  • 使用“默认”环境变量启动新的子进程

    我正在编写一个构建脚本来解析依赖的共享库 及其共享库等 这些共享库在正常情况下是不存在的PATH环境变量 为了使构建过程正常工作 让编译器找到这些库 PATH已更改为包含这些库的目录 构建过程是这样的 加载器脚本 更改 PATH gt 基于
  • Django 与谷歌图表

    我试图让谷歌图表显示在我的页面上 但我不知道如何将值从 django 视图传递到 javascript 以便我可以绘制图表 姜戈代码 array Year Sales Expenses 2004 1000 400 2005 1170 460
  • python 线程安全可变对象复制

    Is 蟒蛇的copy http docs python org 2 library copy html模块线程安全吗 如果不是 我应该如何在 python 中以线程安全的方式复制 deepcopy 可变对象 蟒蛇的GIL http en w
  • 多个对象以某种方式相互干扰[原始版本]

    我有一个神经网络 NN 当应用于单个数据集时 它可以完美地工作 但是 如果我想在一组数据上运行神经网络 然后创建一个新的神经网络实例以在不同的数据集 甚至再次同一组数据 上运行 那么新实例将产生完全错误的预测 例如 对 XOR 模式进行训练
  • 如何为不同操作系统/Python 版本编译 Python C/C++ 扩展?

    我注意到一些成熟的Python库已经为大多数架构 Win32 Win amd64 MacOS 和Python版本提供了预编译版本 针对不同环境交叉编译扩展的标准方法是什么 葡萄酒 虚拟机 众包 我们使用虚拟机和Hudson http hud

随机推荐

  • Objective-C 序列化复杂对象列表

    我有一个类列表 如下所示 interface AISlideItem NSObject NSString PlaceHolderName NSUInteger PlaceHolderID property nonatomic strong
  • OpenJPA 与 Glassfish 配合得很好吗?

    有人成功地将 OpenJPA 与 Glassfish 结合使用吗 我正在尝试将 OpenJPA 2 1 与 Glassfish 3 1 开源一起使用 我已按照此处的说明将两者集成 gt http weblogs java net blog
  • 如何在编译时确定元组元素的偏移量?

    我需要确定元组中某个索引元素的偏移量compile time 我尝试了这个功能 复制自https stackoverflow com a 55071840 225186 接近尾声 template
  • 对文件夹中的所有文件执行命令

    我想对目录中的所有文件运行命令 对于 c conversion ajt 中的 1 执行以下操作转换命令 1 2 但是 我需要一个与输入相同但具有不同文件扩展名的输出文件名 asciitojt exe filename1 ajt filena
  • 在 mutate() 中使用列函数的变量

    我如何使用变量来代替列名在 dplyr 字符串中 举个例子 我想向 iris 数据集添加一列 称为 sum 它是 Sepal Length 和 Sepal Width 的总和 简而言之 我想要以下代码的工作版本 x Sepal Length
  • Python str() 双引号字符串

    我知道这个问题听起来很幼稚 但我还是坚持下去 我正在使用 jquery 自动完成 结果发现它需要 data1 data2 形式的列表 我正在从 json 文件获取数据并且 data json load fobj content data s
  • PHP 作曲家 HTTPS 错误 1416F086。证书验证失败

    我突然在使用 PHP Composer 时遇到了这个令人讨厌的 HTTPS 错误 而 Composer 曾经在我的机器上工作 Github 和 stackoverflow 上已经有存在相同问题的主题 我尝试了所有推荐的东西 但没有任何对我有
  • C# - 内部属性在快速观察中“可读”但不使用反射?

    我看到 快速监视 窗口可以访问所有属性 无论库中类的访问限制 内部 受保护 私有 如何 即使在完全不同的应用程序 库和命名空间中引用该库也是如此 然而我没有找到使用 反射 访问这些的方法 我特别尝试 读取 注意 只是读取 程序集的内部属性
  • 字符串文字中的转义状态作为“String#tr”的参数

    对于作为参数的单引号字符串文字中的反斜杠的转义状态 对我来说有些神秘String tr 你能解释一下下面三个例子之间的对比吗 我尤其不明白第二个 为了避免复杂化 我正在使用 d 在这里 当用双引号转义时不会改变含义 d d tr x gt
  • 使用反应式扩展观察传入的 websocket 消息?

    我想使用 linq 来处理通过 websocket 连接接收到的事件 这是我到目前为止所拥有的 private static void Main string WsEndpoint wss push planetside2 com stre
  • 服务中的可运行对象是否在 UI 线程上运行

    在 Android 中 当我在服务内创建一个可运行对象并运行它时 虽然我意识到它在自己的线程中运行 但该线程是否是 UI 线程的一部分 换句话说 如果runnable执行了一个很长的过程 会影响UI吗 EDIT private class
  • 如何根据行中的文本单击表格中的链接

    使用 page object 和 watir webdriver 如何根据行文本单击表中的链接 如下所示 该表包含 3 行 第一列中有名称 右侧列中有相应的详细信息链接 仪表板 详细信息 示例 详细信息 等等 div class basic
  • Google 地图:为什么我会收到referer-not-allowed-map-error? [关闭]

    Closed 这个问题需要调试细节 目前不接受答案 我有一个 Android 应用程序 在 Play 商店之外 它使用带有 Javascript 的 HTML 页面来调用 Google 地图 我得到一个referer not allowed
  • 如何向服务器套接字写入字节

    我正在编写一个java套接字程序来从服务器读取数据 我无法控制服务器 下面是约定的协议 2字节 幻数 2字节 数据长度 N 字节 ASCII 字符串数据有效负载 幻数和数据长度的大端序 例如 如果我的请求是 command 1 getuse
  • 如果 value 中的 a 值等于 R 中的上一行,则删除整行

    我是 R 编程新手 需要帮助根据单列的值删除整行 如果单列中的值等于前一行的值 我想删除该行 以下是我的数据 x id x timestamp x count 71 1 1435114605 61 72 1 1435114606 61 73
  • WordPress自定义文件在页面上传

    我目前正在使用此代码进行 PHP 文件上传 直接在 WordPress 页面上找到
  • 徽标/图像未显示在shinyapps.io 上

    我的徽标正在显示本地 R 闪亮 但是当我将应用程序部署到闪亮应用程序io 在这里检查应用程序 标志显示一张空白图片 有人可以帮我吗 The blank logo My code library dplyr library shiny lib
  • Highcharts 多线图

    这是我的小提琴 http jsfiddle net a4UQf Code function container highcharts title text Monthly Average Temperature x 20 center su
  • 在 Django 中序列化外键对象

    我一直致力于在 Django 中开发一些 RESTful 服务 以便与 Flash 和 Android 应用程序一起使用 开发服务接口非常简单 但我在序列化具有外键和多对多关系的对象时遇到了问题 我有一个这样的模型 class Artifa
  • python脚本杀死并启动自身

    我想在一小时内达到指定时间时启动 python 脚本的新实例并杀死当前实例 python 脚本使用 crontab 在启动时自动启动 无限 while 循环读取数据 如果在第 59 秒 30 和第 59 秒 59 之间有数据传入 则文件将关