如何在关闭SSH连接后保持远程服务器上的Python脚本运行?

10
我已经用Python3编写了一款股票交易机器人。我将其托管在一个服务器上(Ubuntu 18.10),并使用iTerm进行SSH连接。想知道如何让脚本继续运行,以便在退出会话时不会杀死活动进程。
基本上,我想通过SSH连接到我的服务器,启动脚本,然后关闭并在一天结束时重新进入以停止进程。

1
我会看一下tmux,但你也可以考虑将你的脚本作为守护进程运行。 - wpercy
以下是关于编程的内容,需要翻译成中文。请仅返回翻译后的文本:这里还有一个有用的问题/答案,关于 如何在结束ssh会话后保持进程运行? - wpercy
4个回答

4
您可以使用nohup命令,并在您的命令末尾添加&来安全地退出会话,而不会终止原始进程。例如,如果您的脚本名为script.pynohup python3 script.py & 通常情况下,使用&运行命令并在之后退出shell时,shell将使用挂断信号(kill -SIGHUP <pid>)终止子命令。这可以通过使用nohup来防止,因为它捕获该信号并忽略它,以便它永远不会传达到实际应用程序。

4

您可以使用屏幕

sudo apt-get install screen

screen 

./run-my-script

Ctrl-A then D to get out of your screen

然后您将能够关闭ssh终端。稍后回来并运行

screen -ls

screen -r $screen_running

通常情况下,正在运行的屏幕是在列出所有屏幕后看到的前5个数字。您可以查看脚本是否仍在运行,或者如果您已添加日志记录,则可以查看处理过程的位置。

1
谢谢!我会尝试这个在tmux中。 - David D

0

0

我来这里是为了找到 nohup python3 script.py &

这个线程的正确解决方案是 screen 或者 tmux。 :)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接