Windows ssh - 如何在断开连接后保持进程运行

Posted

技术标签:

【中文标题】Windows ssh - 如何在断开连接后保持进程运行【英文标题】:Windows ssh - How to keep proccess running after Disconnect 【发布时间】:2018-07-28 07:26:45 【问题描述】:

我想通过 SSH(php 脚本)启动一个 java 进程(Minecraft 服务器)。并且在断开连接时不应关闭它。

我正在使用适用于 Windows 和 64 位 Java 的 Bitvise SSH 服务器。 我可以启动服务器,但如果我与 ssh 服务器断开连接,那么 java 进程(Minecraft 服务器)就会停止。 我试过 PUTTY 但同样的问题。

是否有 cmd 的命令,例如 Linux 的 screen,它会将进程置于后台?

谢谢。

【问题讨论】:

使用tmuxscreen等工具。 但是在带有cmd的windows上没有linux命令 【参考方案1】:

在超级用户上查看这个问题:Windows - Run process on background after closing cmd

所以你要做的是:

start javaw.exe <arguments>

这将在您与 SSH 断开连接后保持进程运行,这将关闭您发出命令的 CMD 会话。

【讨论】:

这似乎只有在(并且只要)用户登录到 Windows 桌面会话时才有效。至少对我来说,退出 Windows 也会终止在 ssh 会话中打开的进程(从远程计算机)。但是,即使在用户退出 Windows(和 ssh)之后,上面的“powershell Invoke-WmiMethod”答案似乎也能保持进程运行。【参考方案2】:

如果您安装了 GNU Coreutils/cygwin,那么您可以运行 start nohup your-command &gt; logfile.txt,并且当您退出 ssh 会话时它应该会继续运行。这适用于 Windows 10 附带的 OpenSSH 服务器。

【讨论】:

【参考方案3】:

LK"我

我正在为 Windows 使用 OpenSSH 服务器。 使用此 Power shell 命令设法使其工作:

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe Invoke-WmiMethod -Class Win32_Process -Name Create -ArgumentList C:\path\your-command.exe

【讨论】:

以上是关于Windows ssh - 如何在断开连接后保持进程运行的主要内容,如果未能解决你的问题,请参考以下文章

解决Linux SSH连接容易断开的问题

如何解决SSH连接Linux超时自动断开

保持ssh连接长时间不断开的技巧

如何在SSH断开后让远程服务器程序继续运行

ssh保持长连接的方式

ssh 与服务器保持连接