【问题标题】:How to run a python script always in linux (ubuntu)如何始终在 linux (ubuntu) 中运行 python 脚本
【发布时间】:2021-02-17 00:58:49
【问题描述】:

我有一个使用 ssh 连接的 linux 系统服务器。现在我有一个 python 脚本。我希望它始终运行。我使用这个 commond

ubuntu:~$ nohup python3 -u ~/test/main.py > test.outs 2>&1 &

但是我退出ssh connect,那个python脚本同时退出。 我该怎么办?

【问题讨论】:

  • 根据我的经验,在没有 nohup 的情况下运行脚本是可行的
  • 您可以为此使用tmux。它会打开一个所谓的会话,您可以将其附加和分离,即:通过 ssh 连接、创建会话、运行脚本、从会话分离、断开连接。
  • 你的命令看起来没问题,你怎么知道你的脚本停止工作了?你跑ps -ef | grep main检查了吗?

标签: python linux ubuntu


【解决方案1】:

您可以定期运行脚本/检查它是否使用 cronjob 运行,这还允许您在系统启动时运行脚本,以便在重新启动时继续运行。

这里有一些建议; https://superuser.com/questions/448445/run-bash-script-in-background-and-exit-terminal

虽然这也表明 nohub 应该在您退出会话时停止子进程被杀死。您如何知道脚本在退出时停止运行?

【讨论】:

    【解决方案2】:

    有多种方法可以做到这一点,它们取决于您的用例。

    一种方法是在您的服务器上安装“screen”。

    sudo apt-get install screen
    

    现在,每当您使用 ssh 连接到您的服务器时,您都可以输入“screen”,然后在那里启动您的代码。 (第一次执行此操作时,您会在屏幕上看到说明,按空格跳过它)

    执行此代码后,您键入 Ctrl + A,然后键入 Ctrl + D。这将“分离”屏幕。您现在可以断开连接,此“屏幕”将保持存在,代码仍将运行。

    重新连接时,您可能希望返回此屏幕。类型

    screen -ls
    

    获取您正在运行的屏幕的概览。 (在这种情况下,只有一个)它们可以通过它们开头的 5 个数字来识别。所以通过键入返回此屏幕

    screen -r XXXXX
    

    现在你回来了。更多信息请点击此处:

    https://www.howtogeek.com/662422/how-to-use-linuxs-screen-command/

    再说一次,我不知道你的脚本是做什么的,所以它可能不是最好的解决方案。

    【讨论】:

      【解决方案3】:

      您可以使用screen

      安装后,您可以通过向控制台发送screen 来启动屏幕,然后运行您的脚本。当您输入CTRL+A+D 时,屏幕将消失,您可以退出 ssh 连接。

      如果重新打开之前打开的屏幕,只需输入screen -r

      如果您有多个屏幕实例,当您键入screen -r 时,该应用会显示屏幕编号。你只需要找到屏幕的id并输入screen -r idscreen -r 2643

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-05-11
        • 2016-07-23
        • 2021-01-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-05-04
        相关资源
        最近更新 更多