Windows 서버에서 SSH 로그아웃 후 프로세스가 종료됩니다.

Windows 서버에서 SSH 로그아웃 후 프로세스가 종료됩니다.

나는윈도우 서버 2016cli를 사용하는 파일을 원격으로 실행해야 하는 머신SSH를 사용하여.

SSH 연결에서 로그아웃하면 SSH 사용자가 시작한 프로세스가 종료되는 것으로 알려져 있습니다. Linux 시스템에서는 nohup또는 같은 솔루션을 사용하면 screen로그오프 후에도 프로세스가 종료되지 않습니다.

이러한 솔루션은 Windows 시스템에서는 작동하지 않으며 로그아웃한 후 프로세스가 종료되는 것을 방지하는 방법을 찾고 있습니다.

  • 내 고객은우분투 머신
  • 내 Windows Server 2016이 실행됩니다.오픈SHH, 와 함께파워셸기본 쉘로
  • 내 프로그램이 데몬 모드에서 작동하도록 설정되어 있으며 cmd 또는 powershell 창이 열려 있지 않습니다.
  • 사용하면 Get-Process -Name proc_name프로세스가 실제로 실행 중임을 보여줍니다.
  • SSH 로그아웃 후에 사용하면 Get-Process그러한 프로세스가 생성되지 않습니다.

내가 시도한 것:

  • .exe를 사용하여 파일을 실행합니다 cmd.
  • 해당 인수로 시작하는 .bat및 파일을 실행합니다 ..ps.exe

Windows 시스템에서 이 문제를 해결할 수 있는 방법이 있습니까?

답변1

솔루션을 찾기 위해 많은 시간을 보낸 후 PowerShell을 사용하여 완전히 올바른 방법을 찾았습니다.

이는 온라인에서 덜 사용되거나 문서화된 cmdlet 중 하나인 것처럼 보이며 이미 거대한 Wmi Objects.

간단히 말해서:

, 및 foo.exe인수를 사용하여 백그라운드에서 실행해야 하는 프로그램이 있다고 가정하면 정확한 명령을 사용해야 합니다.-a-bbar

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

물론 exe가 "알려진" exe(기본적으로 메모장이나 ping 등)이거나 사용자가 추가한 경우에는 exe -ArgumentList이름을 사용할 때 전체 경로가 필요하지 않으며 exe 이름이면 충분합니다(메모장, ping 등). .).

추가 매개변수:

Invoke-WmiMethod( SSH를 사용하지 않고 원격 시스템의 무언가 에 로컬 PS를 사용하는 좋은 방법 ) 과 같은 추가 매개변수를 지원합니다 -Credential. -ComputerNameInvoke-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...}

물론 을 사용하면 위 명령에서 사용한 것과 같은 사용 가능한 모든 항목과 사용 가능한 모든 항목 (사용하지 않은) |Select-Object -ExpandProperty (_your_property_here_)이 표시됩니다 .MethodsCreateProperties

관련 정보