ssh 关闭后保持 python 脚本运行

ssh 关闭后保持 python 脚本运行

我正在尝试运行一个script.py在我通过 ssh 连接的远程 CentOS 7.3 机器上调用的脚本。我正在从名为 的环境运行该脚本py。我希望脚本在断开连接后继续运行。通过阅读我尝试过的其他堆栈交换问题

conda activate py
nohup python script.py &

这是可行的,但是当我断开 ssh 时,进程停止运行。

我也尝试过

screen
conda activate py
python script.py

然而,这给了我一个NameError与我的环境中py但不在base.所以看起来当我使用screen它时不使用py环境。

最后我没有tmux安装,也不能这样做,因为它是一个工作箱。

还有其他想法吗?

答案1

尝试setsid。我将它用于运行 WSGI 的 python 脚本。每技术人员:

实现所需行为的另一个实用程序是setsid。 Nohup 有一个缺点,即进程的进程组保持不变,因此使用 nohup 运行的进程很容易受到发送到整个进程组的任何信号(例如 Ctrl + C)的影响。

另一方面,setsid 为正在执行的进程分配一个新的进程组,因此,创建的进程完全位于新分配的进程组中,并且可以安全地执行,即使在会话注销后也不用担心被杀死。

答案2

这通常对我有用,

python script.py &

在你的情况下尝试不使用诺哈普,这应该有效。

相关内容