【问题标题】:Starting independent batch files through ssh and process ownership通过 ssh 和进程所有权启动独立的批处理文件
【发布时间】:2012-08-16 22:45:22
【问题描述】:

过去,我在很多事情上都使用过批处理文件……但我一直遇到这个问题。如果这是一个重复的问题,我很抱歉,我不完全确定我知道如何表达它以用于搜索目的。问题是这样的:

1) 批处理文件启动一些进程。 2) 用户关闭的命令窗口。 3) 由批处理文件启动的进程结束。

我想这是因为启动的进程被批处理文件“调用”,因此它是子进程。具体来说,我要做的是通过 ssh 登录到服务器,运行位于该服务器上的批处理文件,然后启动一个 java 程序。我需要批处理保持打开状态,或者允许 java 程序以某种方式拥有自己。这样,当我离开 SSH 会话时,程序将继续运行。有什么想法可以做到这一点吗?

我正在使用 MobaSSH 运行 Windows XP x64 服务器。

【问题讨论】:

  • Windows 不会在父进程退出时自动杀死子进程,所以这可能是 SSH 服务器正在做的事情。

标签: windows batch-file ssh


【解决方案1】:

问题不清楚,但看起来您正在寻找一种从终端“分离”脚本的方法,以便即使在终端关闭时它也能继续运行。

你可以这样做:

nohup <your-script> &

或者:

<your-script> &
disown

【讨论】:

  • 听起来确实像我正在尝试做的......但在 Windows shell 中
  • 抱歉,错过了 Windows 部分
  • 感谢您的意见,感谢您抽出宝贵时间提出建议 :)
【解决方案2】:

您可以尝试使用来自 sysinternals 的 psexec 工具。

一些可能有用的命令:

  1. at
  2. schtasks
  3. sc
  4. wmic

我不确定上述任何命令是否有任何帮助,但我认为它们值得一试。

【讨论】:

  • 感谢您的输入...但我正在寻找更安全的东西,并且允许使用已安装的 SSH shell 访问。编辑:+1 赞成可行的解决方案
  • @impyre:我建议你通过 SSH 进入服务器来运行批处理文件,但是在批处理文件中使用 psexec 来启动 Java。使用 psexec 在本地主机上启动软件时,我没有发现任何安全问题。
  • @impyre - 你最终使用了psexec 或任何其他命令吗?
猜你喜欢
  • 1970-01-01
  • 2013-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多