如何在进程 运行 时取消 SSH 连接?

How to cancel a SSH connection while a process is running?

我正在使用 ssh 连接到另一台(更快的)计算机,以便 运行 一些 python 代码。正如我预期的那样 运行 几个小时,我想在 运行 之后断开连接,如下所示:

$ ssh user@my-other-computer
$ python file.py &
$ exit 

但是,如果我尝试这样做,我会收到消息:

zsh: you have running jobs.

我尝试使用 nohup:

$ nohup nice python file.py &

但无济于事。

How can I achieve my goal?

我不知道为什么 nohup 不起作用(可能是因为 nice,它可以在没有 nice 命令的情况下工作)但是还有其他选择:

  • screen 创建一个未绑定到您的会话的新终端(您可以分离屏幕会话使用 screen -dContr+A 然后 :detach 并使用 screen -r 再次附加到它)。您可以 运行 命令使用 screen python file.py

  • tmux是终端复用器。它类似于屏幕,但功能更多,速度更快。您可以在新创建的会话中使用 tmux 和 运行 python file.py 打开一个 tmux 会话。您可以使用 Contr+Bdtmux detach-client.

  • 分离
  • disown 是一个 shell 命令,它 拒绝 当前 shell 中的所有作业,您可以关闭它工作将保持 运行ning.