Jad*_*ias 12 windows nohup background-process
nohup 在后台运行一个进程。Windows 有什么等价物吗?
您可以使用 start 命令在命令窗口的后台运行进程。
command1
command2
start command3
command4
Run Code Online (Sandbox Code Playgroud)
command2 等到 command1 完成,但 command4 不等待 command3 完成。
如果您需要独立于登录的用户运行,则需要将该进程作为服务启动,您可以使用anysrv.exe
您可能想查看 Windows 服务。您可以下载一些工具来将任何进程作为 Windows 服务托管。这会导致进程在 Windows 启动时在后台加载,因此如果它不需要用户交互,您应该能够像这样托管它。
您要使用的工具称为 srvany.exe。
在 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
Run Code Online (Sandbox Code Playgroud)
要授予“joe 用户”创建计划任务的能力,您必须修改 %SystemRoot%\Tasks 文件夹的权限。有关这方面的一些信息,请参见此处:http : //technet.microsoft.com/en-us/library/cc785125(WS.10).aspx
这一切都取决于您的最终目的是什么。您可以运行计划任务,并选择仅在用户登录设置为“已禁用”时才运行。您可以从远程计算机使用 psexec。更好的方法可能是将流程作为服务来运行。查看此 Google 搜索、此其他 Google 搜索、此线程和此其他线程,以了解您搜索解决方案的一些可能线索。最终看来Windows 机器上没有与 nohup 完全相同的东西。