Windows中有什麼辦法可以讓進程在背景運行嗎? Windows 下的 nohup 等效項

Windows中有什麼辦法可以讓進程在背景運行嗎? Windows 下的 nohup 等效項

nohup 在背景執行一個程序。 Windows 有類似的嗎?

答案1

您可以使用啟動命令在命令視窗的背景中運行進程。

command1
command2
start command3
command4

指令 2 等待指令 1 完成,但指令 4 不等待指令 3 完成。

如果您需要獨立於登入使用者執行,則需要將進程作為服務啟動,並且可以使用任何srv程序

答案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 基本上,你正在考慮做(無恥地從微軟竊取):

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。

相關內容