【问题标题】:How do I restart a python script on a remote server if it stops?如果它停止,如何在远程服务器上重新启动 python 脚本?
【发布时间】:2019-01-26 03:33:28
【问题描述】:

我有一个在远程服务器上运行的 python 脚本,我开始使用nohup python myscript.py &。如果脚本停止,我想重新启动脚本。我检查了this answer,但我不确定这是否会启动脚本。我相信它会检查脚本是否停止并在脚本停止时启动它。此外,它需要脚本的pid,每次我重新启动脚本时都会有所不同。

我还检查了this answer,但我不确定是否可以将nohup 命令赋予until.. do 循环。它也不会在每 1 秒后重新启动我的脚本吗?谁能指定我如何编写脚本以在脚本停止时重新启动它?

【问题讨论】:

    标签: python shell


    【解决方案1】:

    您可以使用非常成熟、经过实战考验的supervisord 来为您守护任何脚本,而不是编写自己的脚本。

    除了自动重启之外,它还提供了许多其他功能,包括开箱即用的注销,它被广泛用于守护 Python 脚本

    【讨论】:

    • 我很想尝试,但不幸的是我无法在远程服务器上安装任何东西。所以我需要编写自己的脚本。
    【解决方案2】:

    如果您想要自己的解决方案,只需使用 bash 脚本:

    #!/bin/bash
    while :
    do
        python myscript.py
        echo "crashed" >> log
    end
    

    使其可执行 (chmod +x),然后像 nohup ./thisscript.sh & 一样运行它。

    或让其他软件为您完成(如建议的 dm03514)。

    【讨论】:

    • 如果你只是复制,请更改第一行,我的自动更正毁了它。
    【解决方案3】:

    如果您想从内部重新启动它,您可以尝试:

    import os, sys
    
    os.execv(__file__, sys.argv) #__file__ for current file or one of your choice
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-05
      相关资源
      最近更新 更多