【问题标题】:Run application on server without ssh session在没有 ssh 会话的服务器上运行应用程序
【发布时间】:2020-08-25 23:01:30
【问题描述】:

我有一个用 python 编写的应用程序,它在 VPS 服务器上运行。它是一个小型应用程序,通过 TCP 套接字从 SQLite 数据库写入、读取和接收读取请求。

缺点是应用程序只在控制台打开时运行(使用ssh协议),在关闭控制台时,即ssh会话关闭应用程序。 应该如何实施?还是我必须实施?因为服务器是ubuntu服务器

【问题讨论】:

    标签: ssh server vps


    【解决方案1】:

    nohup 应该对您的情况有所帮助:

    • 在您的 ssh 会话中,启动以 nohup 为前缀的 python 应用程序,如recommended here
    • 退出您的 ssh 会话

    即使它的父 shell(ssh 会话)被终止,程序也应该继续工作。

    【讨论】:

    • 我已经尝试过 nohup 命令,它可以工作,但过了一会儿,应用程序关闭了。你能告诉我为什么会这样吗?
    • @JuliánOviedo 这似乎与在您的 SSH 会话中运行的应用程序更相关。也许它使用的套接字被关闭,触发该程序的退出。您需要在程序中添加一些跟踪/日志以更好地了解其生命周期。
    • 感谢您的回答。我认为套接字实际上已关闭,因为在 nohup.out 文件中我没有显示任何错误消息。如何使套接字始终处于活动状态?因为我看到不是误关而是因为很久没用了
    • @JuliánOviedo 你能试试nohup <COMMAND> 1>/tmp/error.log 2>&1 & 看看应用程序何时最终关闭,/tmp/error.log 是否包含任何线索?
    • 我得到了这个:文件“servidor_tcp_python.py”,第 169 行,在 ejecucion_servidor() 文件“servidor_tcp_python.py”,第 28 行,在 ejecucion_servidor data = connection.recv(4096) 中。 decode("utf-8") UnicodeDecodeError: 'utf-8' codec can't decode byte 0xfe in position 1: invalid$
    【解决方案2】:

    有(至少)两种解决方案:

    1- 'nohup' 命令,使用如下:nohup python3 yourappname.py &

    这将在后台运行您的程序,如果您终止 ssh 会话,它不会被杀死,它还会在运行此命令后给您一个免费提示以继续您的工作。

    2- 另一个很棒的选项是“screen”命令。 这为您提供了 nohup 为您提供的一切,此外它还允许您在以后的登录中检查程序的输出(如果有)。虽然乍一看可能有点复杂,但是超级酷!我强烈建议您学习它并在您的余生中享受它! 一个很好的解释可以在here

    【讨论】:

    • 我已经尝试过 nohup 命令,它可以工作,但过了一会儿,应用程序关闭了。你能告诉我为什么会这样吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 2016-02-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多