Windows의 백그라운드에서 프로세스를 실행할 수 있는 방법이 있습니까? Windows와 동등한 nohup

Windows의 백그라운드에서 프로세스를 실행할 수 있는 방법이 있습니까? Windows와 동등한 nohup

nohup은 백그라운드에서 프로세스를 실행합니다. Windows에 해당하는 것이 있습니까?

답변1

start 명령을 사용하여 명령 창의 백그라운드에서 프로세스를 실행할 수 있습니다.

command1
command2
start command3
command4

command2는 command1이 끝날 때까지 기다리지만 command4는 command3이 끝날 때까지 기다리지 않습니다.

로그온한 사용자와 독립적으로 실행해야 하는 경우 프로세스를 서비스로 시작해야 하며 다음을 사용할 수 있습니다.anysrv.exe

답변2

Windows 서비스를 살펴보고 싶을 수도 있습니다. 모든 프로세스를 Windows 서비스로 호스팅하기 위해 다운로드할 수 있는 몇 가지 도구가 있습니다. 이로 인해 Windows 시작 시 프로세스가 백그라운드에서 로드되므로 사용자 상호 작용이 필요하지 않은 경우 이와 같이 호스팅할 수 있어야 합니다.

Windows Server 2003 리소스 키트

당신이 찾고 있는 도구는 srvany.exe입니다.

답변3

Windows에서 사용자가 시작한 프로세스가 로그오프 후에도 계속 실행되도록 할 수 있는 유일한 방법(예: "nohup"의 기능)은 "예약된 작업"을 통해 또는 Windows 서비스로 프로세스를 시작하는 것입니다. 사용자가 로그오프하면 로그온 세션의 모든 프로세스가 종료됩니다.

"예약된 작업" 방법을 시도하려는 게임이라면 프로그래밍 방식으로 작업을 생성하는 방법을 알고 싶을 것입니다. 그만큼Win32_ScheduledJobWMI 클래스가 가능합니다. 여기에 자세한 문서가 제공됩니다.http://www.microsoft.com/technet/scriptcenter/guide/sas_man_rsxs.mspx?mfr=true 기본적으로 다음을 수행하려고 합니다(부끄럽게도 Microsoft에서 도난당함).

Set objService = GetObject("winmgmts:\\.")
Set objNewJob = objService.Get("Win32_ScheduledJob")
errJobCreated = objNewJob.Create("Program-to-execute.exe", "ugly-formatted-time-string-per-Microsoft-docs",True ,1 OR 4 OR 16, , ,JobID)
If Err.Number = 0 Then
 Wscript.Echo "New Job ID: " & JobID
Else
 Wscript.Echo "An error occurred: " & errJobCreated
End If

"joe 사용자"에게 예약된 작업을 생성할 수 있는 권한을 부여하려면 %SystemRoot%\Tasks 폴더에 대한 권한을 수정해야 합니다. 해당 내용에 대한 정보는 여기를 참조하세요.http://technet.microsoft.com/en-us/library/cc785125(WS.10).aspx

답변4

이것은 모두 귀하의 궁극적인 목적이 무엇인지에 달려 있습니다. 사용자가 로그온한 경우에만 실행하는 옵션을 사용 안함으로 설정하여 예약된 작업을 실행할 수 있습니다. 원격 시스템에서 psexec를 사용할 수도 있습니다. 더 나은 방법은 프로세스를 서비스로 실행하는 것입니다. 확인해 보세요이번 구글 검색,이 다른 Google 검색,이 스레드, 그리고이 다른 스레드해결책을 찾는 과정에서 가능한 단서를 찾으세요. 결국은 없는 것 같다.정확한Windows 시스템의 nohup과 동일합니다.

관련 정보