在没有ssh会话的服务器上运行应用程序

在没有ssh会话的服务器上运行应用程序,ssh,server,vps,Ssh,Server,Vps,我有一个用python编写的应用程序,它运行在VPS服务器上。它是一个小型应用程序,通过TCP套接字从SQLite数据库写入、读取和接收读取请求 缺点是,应用程序仅在控制台打开(使用ssh协议)时运行,在关闭控制台时运行,也就是说,ssh会话关闭应用程序。 应该如何实施?或者我必须实施它?因为该服务器是ubuntu服务器,所以在您的情况下应该有帮助: 在ssh会话中,启动以nohup为前缀的python应用程序,如下所示 退出ssh会话 即使父shell(ssh会话)终止,程序也应继续工作。

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

缺点是,应用程序仅在控制台打开(使用ssh协议)时运行,在关闭控制台时运行,也就是说,ssh会话关闭应用程序。 应该如何实施?或者我必须实施它?因为该服务器是ubuntu服务器,所以在您的情况下应该有帮助:

  • 在ssh会话中,启动以nohup为前缀的python应用程序,如下所示
  • 退出ssh会话
即使父shell(ssh会话)终止,程序也应继续工作。

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

1-在“nohup”命令中,按如下方式使用:nohup python3 yourappname.py&

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

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

我已经尝试了nohup命令,它可以工作,但是过了一段时间应用程序关闭了。你能告诉我为什么吗?@JuliánOviedo这似乎与SSH会话中运行的应用程序更相关。可能它使用的套接字被关闭,触发程序退出。您需要在程序中添加一些跟踪/日志,以便更好地了解其生命周期。谢谢您的回答。我认为套接字实际上是关闭的,因为在nohup.out文件中我没有显示任何错误消息。如何使插座始终处于活动状态?因为我看到它不是错误关闭的,而是因为它没有使用很长时间time@JuliánOviedo你能试试
nohup 1>/tmp/error.log 2>&1&
看看应用程序最终何时关闭吗
/tmp/error.log
包括任何线索吗?我得到了这个:文件“servidor\u tcp\u python.py”,第169行,在eecucion\u servidor()文件中“servidor_tcp_python.py”,第28行,在Ejeucion_servidor data=connection.recv(4096).decode(“utf-8”)UnicodeDecodeError:“utf-8”编解码器无法解码位置1中的字节0xfe:invalid$我尝试了nohup命令,但它工作了一段时间后应用程序关闭。您能告诉我为什么会这样吗?