如何在 Linux 上使用 bash 或 python 生成独立的后台进程

2023-12-09

我在 Linux 上有一个长时间运行的 python 脚本,在某些情况下它需要执行命令来停止并重新启动自身。所以,我想要一个外部脚本(bash 或 python 中的)来执行命令来重新启动原始脚本。让我详细说明一下。

假设我有original_script.py。在 Original_script.py 中,我将其置于无限循环中:

if some_error_condition:
    somehow call external script external.sh or external.py

假设我可以调用 external.sh 并且它包含以下内容:

#!/bin/bash
command_to_restart_original_script

最后,我知道了命令“command_to_restart_original_script”。那不是问题。需要的是“以某种方式调用外部脚本external.sh”的python 命令。我需要外部脚本(这是一个子进程)在父进程original_script.py 重新启动时继续运行,即我需要分离/守护子进程。我该怎么做呢?


我在不同的地方找到了很多建议,但唯一对我有用的答案是:如何在后台启动并运行外部脚本?

import subprocess
subprocess.Popen(["nohup", "python", "test.py"])

就我而言,我运行了一个名为 longrun.sh 的脚本,因此实际命令是:

import subprocess
subprocess.Popen(["nohup", "/bin/bash", "longrun.sh"])

我使用 run.py 对此进行了测试:

import subprocess
subprocess.Popen(["nohup", "/bin/bash", "longrun.sh"])
print "Done!"

我验证(使用 ps -ax | grep longrun)longrun.sh 确实在 run.py 退出后很长一段时间内在后台运行。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Linux 上使用 bash 或 python 生成独立的后台进程 的相关文章

  • Python 中的 Lanczos 插值与 2D 图像

    我尝试重新缩放 2D 图像 灰度 图像大小为 256x256 所需输出为 224x224 像素值范围从 0 到 1300 我尝试了两种使用 Lanczos 插值来重新调整它们的方法 首先使用PIL图像 import numpy as np
  • 将数据从 python pandas 数据框导出或写入 MS Access 表

    我正在尝试将数据从 python pandas 数据框导出到现有的 MS Access 表 我想用已更新的数据替换 MS Access 表 在 python 中 我尝试使用 pandas to sql 但收到错误消息 我觉得很奇怪 使用 p
  • 如何在 Bash 中按自然顺序循环文件?

    我使用以下命令循环目录中的所有文件 for i in fas do some code done 不过 我按这个顺序得到它们 vvchr1 fas vvchr10 fas vvchr11 fas vvchr2 fas 代替 vvchr1 f
  • 使用带有关键字参数的 map() 函数

    这是我尝试使用的循环map功能于 volume ids 1 2 3 4 5 ip 172 12 13 122 for volume id in volume ids my function volume id ip ip 我有办法做到这一点
  • Spark KMeans 无法处理大数据吗?

    KMeans 有几个参数training http spark apache org docs latest api python pyspark mllib html highlight kmeans pyspark mllib clus
  • 如何从shell脚本自动登录MySQL?

    我有一个 MySQL 服务器 其中有一个用户和密码 我想在 shell 脚本中执行一些 SQL 查询而不指定密码 如下所示 config sh MYSQL ROOT root MYSQL PASS password mysql sh sou
  • 以编程方式停止Python脚本的执行? [复制]

    这个问题在这里已经有答案了 是否可以使用命令在任意行停止执行 python 脚本 Like some code quit quit at this point some more code that s not executed sys e
  • 使用 Tkinter 显示 numpy 数组中的图像

    我对 Python 缺乏经验 第一次使用 Tkinter 制作一个 UI 显示我的数字分类程序与 mnist 数据集的结果 当图像来自 numpy 数组而不是我的 PC 上的文件路径时 我有一个关于在 Tkinter 中显示图像的问题 我为
  • OpenCV 无法从 MacBook Pro iSight 捕获

    几天后 我无法再从 opencv 应用程序内部打开我的 iSight 相机 cap cv2 VideoCapture 0 返回 并且cap isOpened 回报true 然而 cap grab 刚刚返回false 有任何想法吗 示例代码
  • 如何加速Python中的N维区间树?

    考虑以下问题 给定一组n间隔和一组m浮点数 对于每个浮点数 确定包含该浮点数的区间子集 这个问题已经通过构建一个解决区间树 https en wikipedia org wiki Interval tree 或称为范围树或线段树 已经针对一
  • Python 的“zip”内置函数的 Ruby 等价物是什么?

    Ruby 是否有与 Python 内置函数等效的东西zip功能 如果不是 做同样事情的简洁方法是什么 一些背景信息 当我试图找到一种干净的方法来进行涉及两个数组的检查时 出现了这个问题 如果我有zip 我可以写这样的东西 zip a b a
  • 在Python中获取文件描述符的位置

    比如说 我有一个原始数字文件描述符 我需要根据它获取文件中的当前位置 import os psutil some code that works with file lp lib open path to file p psutil Pro
  • 使用 \r 并打印一些文本后如何清除控制台中的一行?

    对于我当前的项目 有一些代码很慢并且我无法使其更快 为了获得一些关于已完成 必须完成多少的反馈 我创建了一个进度片段 您可以在下面看到 当你看到最后一行时 sys stdout write r100 80 n I use 80覆盖最终剩余的
  • 将图像分割成多个网格

    我使用下面的代码将图像分割成网格的 20 个相等的部分 import cv2 im cv2 imread apple jpg im cv2 resize im 1000 500 imgwidth im shape 0 imgheight i
  • while 循环中的 scanf

    在这段代码中 scanf只工作一次 我究竟做错了什么 include
  • 解释 Python 中的数字范围

    在 Pylons Web 应用程序中 我需要获取一个字符串 例如 关于如何做到这一点有什么建议吗 我是 Python 新手 我还没有找到任何可以帮助解决此类问题的东西 该列表将是 1 2 3 45 46 48 49 50 51 77 使用
  • Conda SafetyError:文件大小不正确

    使用创建 Conda 环境时conda create n env name python 3 6 我收到以下警告 Preparing transaction done Verifying transaction SafetyError Th
  • Python:如何将列表列表的元素转换为无向图?

    我有一个程序 可以检索 PubMed 出版物列表 并希望构建一个共同作者图 这意味着对于每篇文章 我想将每个作者 如果尚未存在 添加为顶点 并添加无向边 或增加每个合著者之间的权重 我设法编写了第一个程序 该程序检索每个出版物的作者列表 并
  • GitHub Actions:如何将 toJSON() 结果传递给 shell 命令

    因此 我正在与 Github Actions 合作进行端到端测试 我正在查看的设置是让一项作业检索要测试的 url 列表 而我的第二项作业使用该列表创建一个矩阵并测试所有这些 我的问题是 当我实际运行测试脚本时 必须从命令行完成 因为我使用
  • 发送用户注册密码,django-allauth

    我在 django 应用程序上使用 django alluth 进行身份验证 注册 我需要创建一个自定义注册表单 其中只有一个字段 电子邮件 密码将在服务器上生成 这是我创建的表格 from django import forms from

随机推荐

  • 如何通过ngrok访问子域?

    我有一个带有 api 子域的 Rails 站点 我本地机器上的路由如下所示 http mysite dev lt normal web stuff http api mysite dev lt my api 如何映射这两个子域 这是我的 n
  • C++ 打印模板容器错误(错误:'operator<<' 的重载不明确)理解吗?

    我想编写可以打印容器的模板函数std vector std 列表 下面是我的函数 只是重载 lt lt template
  • 使用ajax将表单数据发送到php

    我想将表单数据从ajax发送到php 我的 ajax 检索表单数据 但它没有发送它 我没有看到代码有任何问题 也许我需要更专业的帮助 提前致谢 HTML5语法 div align center a Header a div a Sign I
  • 尝试在 python 中发布多部分表单数据,不会发布

    我对 python 相当陌生 所以如果我错过了一些简单的事情 我提前道歉 我正在尝试将数据发布到 python 中的多部分表单 脚本运行 但不会发布 我不确定我做错了什么 import urllib urllib2 from poster
  • 未找到接口“JsonSerialized”

    我正进入 状态Interface JsonSerializable not found error在我的网站上 我在用Laravel 5 4 and PHP 7 1 13 JSON module也启用于Cpanel 但我仍然收到以下错误 P
  • 想要使用 C# 将单词的几个字符加粗在 winforms 的树节点中加粗

    我有 搜索文本框 可以在树视图中搜索 我给出的结果很好 但我想让这些部分变得粗体 我在 winform 的 搜索文本框 中输入了这些部分 例如 我输入 Ram 然后它给出 Ram esh TreeNode 类不支持这一点 它的 Text 始
  • 如何从结果集中获取日期

    从 ResultSet 获取 Date 对象时遇到问题 在数据库中它有一个值 例如2014 08 01 从resultSet中获取它后 它有另一个值 2014 08 31 我知道 ResultSet 的 getDate 方法返回 java
  • 在 appengine 中使用较少的数据存储小操作

    我正在使用 python 27 在 appengine 上制作一个基本相册 我编写了以下方法来从与特定 冒险 匹配的数据存储中检索图像详细信息 我使用限制和偏移量进行分页 但效率非常低 浏览 5 个页面 每页 5 张照片 后 我已经使用了
  • 防止数据库中出现重复值 - mysql

    我有一个表存储有关某些事件重复发生的值 例如 事件id 1发生在周一 周三和周五 并且该活动与id 2发生在周一和周三 所以我的表是这样的 id event id day 1 1 Monday 2 1 Wednesday 3 1 Frida
  • 使用 Java 的回文测试器,忽略空格和标点符号

    我已经编写了程序 直到它必须忽略线程中的标点符号和空格 我想知道是否有人可以帮助我编码 我一直在尝试的似乎不起作用 这是我到目前为止所拥有的 import java util Scanner public class PalindromeT
  • 验证失败时禁用保存按钮

    正如您从标题中可以看到的 我要问的问题以前已经被问过很多次了 但是 在阅读了所有这些其他问题之后 我仍然找不到解决我的问题的合适方法 我有一个具有基本验证的模型类 partial class Player IDataErrorInfo pu
  • 布局管理器在 java 中设置此特定布局

    我有这个布局 我需要为作业进行编程 这是我第一次在 GUI 中使用布局管理器 所以我在使布局匹配时遇到问题 我需要你的帮助 我有两个标签为 帐户创建 和 帐户转移 的选项卡 这些都可以 我需要的是将 JLabel 帐户 ID 和第一个文本字
  • 在 Swing 的 JTextPane 中设置选项卡策略

    我希望 JTextPane 在按下 Tab 时插入空格 目前它插入制表符 ASCII 9 无论如何 是否可以自定义 JTextPane 的选项卡策略 除了捕获 选项卡键 事件并自己插入空格似乎是一个 您可以在 JTextPane 上设置 j
  • 如何将R中矩阵的列(累加和)相加?

    我有一个关于将矩阵的列相加的问题 例如 I have a matrix 1 2 3 1 1 3 1 2 2 4 2 I want it to be 1 2 3 1 1 4 5 2 2 6 8 我们可以申请cumsum在每一行上通过循环遍历行
  • 可以将python中的bz2解压到文件而不是内存中

    我曾经使用过在内存中解压和读取文件bz2图书馆 但是 我已通读文档 似乎不能只是简单地解压缩文件 以在文件系统上使用解压缩的数据创建一个全新的文件 而无需内存存储 当然 您可以使用 BZ2Decompressor 逐行读取 然后将其写入文件
  • 如何使用 Traceit 报告堆栈跟踪中的函数输入变量

    我一直在使用以下代码来跟踪程序的执行 import sys import linecache import random def traceit frame event arg if event line lineno frame f li
  • 在 StreamBuilder 中使用 AnimatedList

    我正在使用 firebase 构建一个聊天应用程序 目前将每条消息作为文档存储在 firebase 的集合中 我使用 StreamBuilder 来获取最新消息并显示它们 我想在接收和发送新消息时添加动画 我尝试过使用 Animatedli
  • Pip 没有安装我的个人应用程序的最新依赖项

    您好 我有一个个人 pip 存储库 其中上传了 3 个版本的个人库 版本是 my lib 0 1 0 my lib 1 0 0 my lib 1 0 1 我有另一个应用程序 它使用 my lib 作为依赖项 在setup py文件如 ins
  • Swift 如何获取 collectionView 中的中心单元格并在滚动时调整其大小?

    I have a horizontal collectionView and i would like to manage that when scrolling it the centre cell becomes larger So e
  • 如何在 Linux 上使用 bash 或 python 生成独立的后台进程

    我在 Linux 上有一个长时间运行的 python 脚本 在某些情况下它需要执行命令来停止并重新启动自身 所以 我想要一个外部脚本 bash 或 python 中的 来执行命令来重新启动原始脚本 让我详细说明一下 假设我有original