【问题标题】:Background process that will kill the current process将杀死当前进程的后台进程
【发布时间】:2013-06-09 07:27:37
【问题描述】:

我正在编写一个可以执行外部 bash 脚本的 python 脚本。这个 bash 脚本做了一些事情,执行完成后,它会杀死 python 进程,并可能重新启动机器。

按照设计,bash 脚本会杀死 python 进程并重新启动机器,但我不确定即使它的父 python 进程死了它是否仍会继续执行。由于机器将在 bash 脚本完成后重新启动,因此我对它的输出不感兴趣。

即使在父 python 进程死亡后,bash 脚本还会继续运行吗?

【问题讨论】:

  • 你为什么不试试这个实验或搜索互联网?
  • 如何启动 bash 脚本?
  • uselpa 使用子进程。

标签: python bash


【解决方案1】:

如果你使用:

os.system('/path/to/script.sh &')

subprocess.call('/path/to/script.sh &', shell=True)

即使 python 脚本死了,这个过程也会继续进行。

如果您总是要重新启动,让操作系统杀死父级,您不必担心。

【讨论】:

  • 顺便说一下subprocess应该被使用而不是os.system
  • 这种情况下我觉得没必要,但还是加了。
  • 有没有不使用shell=True的方法?
  • 基本没有。不与子进程。见stackoverflow.com/questions/12341701/…
  • 看来os.execv 是我的选择。非常感谢您的帮助。
【解决方案2】:

是的。您可以启动一个子进程,该子进程可以在启动它的进程退出后继续运行。 Here's how 不使用 shell=Trueos.system()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多