有没有办法在 Windows 中在后台运行进程?windows 的 nohup 等效项

有没有办法在 Windows 中在后台运行进程?windows 的 nohup 等效项

nohup 在后台运行一个进程。Windows 上有没有类似的程序?

答案1

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

command1
command2
start command3
command4

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

如果需要独立于登录用户运行,则需要将该进程作为服务启动,然后可以使用任何服务端程序

答案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

这一切都取决于你的最终目的是什么。你可以运行一个计划任务,并将仅在用户登录时运行的选项设置为 DISABLED。你可能可以从远程计算机使用 psexec。更好的办法可能是将该进程作为服务运行。查看这个谷歌搜索其他 Google 搜索此主题, 和另一个线程寻找解决方案的一些可能线索。最终似乎没有精确的相当于Windows机器上的nohup。

相关内容