有什么方法可以在Windows中在后台运行进程?Windows的nohup等效项


Answers:


8

您可以使用start命令在命令窗口的后台运行进程。

command1
command2
start command3
command4

command2等待直到command1完成,但是command4不要等待command3完成。

并且如果您需要独立于登录用户运行,则需要将其作为服务启动,并且可以使用anysrv.exe


据我了解,START命令不会分离,即它仍然是创建它的过程的子代。在您的示例中,这意味着一旦母进程退出,“ command3”将死亡。Unix绕过这种做法被称为“ fork-twice”,但我不知道Windows中的等效方法。
unixhacker2010 2013年

至少在Windows 7上,command3不会死,例如,您可以进入cmd提示符“启动记事本”,然后退出,记事本仍将运行
Aragorn

是的,你是对的。但是我正在用我能做的另一种语言进行测试exec(<some windows executable>)。我可以在Process Explorer中清楚地看到父子关系,而无论我从内部开始还是exec()无法生存。更正一下,如果我cmd.exe从“开始”菜单启动一个似乎正常的方法,在该菜单中,cmd.exe退出时启动的进程似乎“正确地”孤立了。显然,我需要更好地理解这一点。:-(
unixhacker2010

6

您可能需要查看Windows服务。您可以下载一些工具来将任何进程作为Windows服务托管。这将导致该进程在Windows启动时在后台加载,因此,如果不需要用户交互,则应该可以像这样托管它。

Windows Server 2003资源工具包

您所追求的工具称为srvany.exe。


5

在Windows中,让用户启动的进程在注销后继续运行的唯一方法(即“ nohup”的作用)是通过“计划任务”或作为Windows服务启动它。当用户注销时,其登录会话中的所有进程将被杀死。

如果您想尝试“计划任务”方法,那么您将想知道如何以编程方式创建它们。该Win32_ScheduledJob WMI类可以做到这一点。此处提供了详细的文档: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/zh-cn/library/cc785125(WS.10).aspx


与使用schtasks.exe或Task Scheduler GUI相比,这样做有什么好处?
赫尔维克,

此API和schtasks.exe之间没有太多功能上的区别。GUI的优点是您可以以编程方式执行此操作。
埃文·安德森

0

这一切都取决于您的最终目的。您可以运行带选项的计划任务,该选项仅在用户登录设置为DISABLED时才运行。您可以从远程计算机上使用psexec。更好的做法可能是将流程作为服务运行。请查看此Google搜索该其他Google搜索该线程以及该其他线程,以寻找解决方案中的潜在线索。最终,在Windows计算机上似乎没有与nohup 完全相同的东西


我的最终目的是向用户隐藏该过程。隐藏它产生的窗口。
贾德·迪亚斯
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.