nohup 在后台运行一个进程。Windows 上有没有类似的程序?
答案1
您可以使用start命令在命令窗口的后台运行一个进程。
command1
command2
start command3
command4
command2 等待直到 command1 完成,但是 command4 不等待 command3 完成。
如果需要独立于登录用户运行,则需要将该进程作为服务启动,然后可以使用任何服务端程序
答案2
您可能需要查看 Windows 服务。您可以下载一些工具来将任何进程托管为 Windows 服务。这会导致进程在 Windows 启动时在后台加载,因此只要它不需要用户交互,您就应该能够像这样托管它。
您所需要的工具是 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。