AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1044393
Accepted
Pizza
Pizza
Asked: 2020-12-01 04:36:11 +0800 CST2020-12-01 04:36:11 +0800 CST 2020-12-01 04:36:11 +0800 CST

在 Windows 服务器上 SSH 注销后进程终止

  • 772

我有一台Windows server 2016机器,它需要运行一个使用 cli 的文件,远程使用 SSH。

众所周知,注销 SSH 连接会终止由 ssh 用户启动的进程。在 linux 机器上,可以使用nohupor之类的解决方案screen,从而导致进程在注销后不会被杀死。

不过,此类解决方案不适用于 Windows 机器,我正在寻找一种方法来防止进程在注销后终止。

  • 我的客户是一台 Ubuntu 机器
  • 我的 Windows server 2016 运行OpenSHH,使用PowerShell作为默认 shell
  • 我的程序设置为在守护程序模式下工作,并且没有打开任何 cmd 或 powershell 窗口
  • 使用Get-Process -Name proc_name显示该进程确实正在运行
  • 在 SSH 注销后使用Get-Process不会产生这样的过程

我也尝试过的事情:

  • 使用. .exe_cmd
  • 运行以参数开头的.bat和.ps文件.exe。

有没有办法在 Windows 机器上解决这个问题?

windows linux powershell ssh process
  • 1 1 个回答
  • 814 Views

1 个回答

  • Voted
  1. Best Answer
    Pizza
    2020-12-03T01:39:54+08:002020-12-03T01:39:54+08:00

    在花了很多时间寻找解决方案之后,我找到了使用 PowerShell 的绝对正确方法。

    似乎它是在线较少使用或记录较少的 cmdlet 之一,并且几乎不可能使用 MSDN 文档自行弄清楚,除非您已经非常熟悉Wmi Objects.

    简而言之:

    假设我有一个程序foo.exe需要使用参数在后台运行-a,-b并且bar,我应该使用确切的命令:

    Invoke-WmiMethod -Path 'Win32_Process' -Name Create -ArgumentList 'C:\Users\foo\Desktop\foo.exe -a -b bar'
    

    当然,如果您的 exe 是“已知”exe(默认情况下,例如记事本或 ping)或由您添加,则在使用-ArgumentListexe 名称时不需要完整路径(记事本、ping 等)就足够了。 .)。

    附加参数:

    Invoke-WmiMethod支持附加参数,例如-Credential, (在不使用 SSH 的情况下使用-ComputerName本地 PS 连接到远程机器上的东西的好方法),还有更多文档在这里。Invoke-Impersonation

    Cmdlet 语法解释和其他 cmdlet 工具:

    • -Path参数指向一个名称WmiObject。有几十个WmiObjects,每个都有很多Methods和Properties。
    • 该-Name参数指示使用的Method.
    • 列出所有可用的Wmi-Objects用途Get-WmiObject -List(这种方式很难找到您需要的对象)。
    • 列出和查看所有可用Win32_Process Methods和Properties使用
    Get-WmiObject -List |where{$_.name -match '^Win32_Process$'}
    

    这将返回此结构的输出:

       NameSpace: ROOT\cimv2
    
    Name                                Methods              Properties
    ----                                -------              ----------
    Win32_Process                       {Create, Terminat... {Caption, CommandLine, CreationClassName, CreationDate...}
    

    当然 using|Select-Object -ExpandProperty (_your_property_here_)将显示所有可用的Methods,例如Create我们在上面的命令中使用的,以及所有可用的Properties(我们没有使用)。

    • 1

相关问题

  • Vanilla Powershell 是否足以成为 Windows 和 DB 服务器管理员的语言?

  • 为什么添加新驱动器后我的磁盘驱动器访问速度如此之慢?

  • (软)Ubuntu 7.10 上的 RAID 6,我应该迁移到 8.10 吗?

  • 在 Windows Server 2003 下使用 wscipt 从 .asp 文件运行 .exe

  • 最佳混合环境(OS X + Windows)备份?[关闭]

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve