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

5

我希望通过SSH(PHP脚本)启动一个Java进程(Minecraft服务器),并在断开连接时不会被关闭。

我正在使用Windows的Bitvise SSH Server和64位Java。我可以启动服务器,但如果我断开SSH服务器的连接,则Java进程(Minecraft服务器)将停止运行。 我尝试使用PUTTY,但出现了相同的问题。

是否有类似于Linux的screen命令的cmd命令,可以将进程放在后台运行?

谢谢。


使用一些工具如 tmuxscreen - iBug
但在Windows上使用cmd,没有Linux命令。 - Flam3rboy
3个回答

7

LK"I

我正在使用Windows的OpenSSH服务器。 使用以下PowerShell命令成功使其运行:

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

这仅适用于管理员用户。非管理员用户将会收到“访问被拒绝”的提示,因为 WMI 需要交互式登录,但 SSH 是网络登录。 - Cruise Liu

0
如果您已经安装了GNU Coreutils/cygwin,那么您可以运行start nohup your-command > logfile.txt,并且在退出ssh会话时它应该仍然保持运行状态。这适用于Windows 10附带的OpenSSH服务器。

0

请查看Super User上的这个问题:Windows - 关闭cmd后在后台运行进程

所以你需要做的是:

start javaw.exe <arguments>

这将使进程在您断开SSH连接后继续运行,而不会关闭您发出命令的CMD会话。


1
这似乎只在用户登录到Windows桌面会话时才有效,只要用户退出Windows,也会终止在ssh会话中打开的进程(来自远程计算机)。然而,上面的“powershell Invoke-WmiMethod”答案似乎可以使进程在用户注销Windows(和ssh)后继续运行。 - NotTheDr01ds

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