nohup запускает процесс в фоновом режиме. Есть ли эквивалент для Windows?
решение1
Вы можете использовать команду start для запуска процесса в фоновом режиме командного окна.
command1
command2
start command3
command4
команда2 ждет завершения команды1, но команда4 не ждет завершения команды3.
и если вам нужно запустить процесс независимо от вошедшего в систему пользователя, вам нужно запустить процесс как службу, и вы можете использоватьanysrv.exe
решение2
Возможно, вам стоит взглянуть на службы Windows. Есть несколько инструментов, которые вы можете загрузить, чтобы разместить любой процесс в качестве службы Windows. Это заставляет процесс загружаться в фоновом режиме при запуске Windows, поэтому, если он не требует взаимодействия с пользователем, вы сможете разместить его таким образом.
Комплект ресурсов Windows Server 2003
Инструмент, который вам нужен, называется srvany.exe.
решение3
Единственный способ в 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/en-us/library/cc785125(WS.10).aspx
решение4
Все зависит от того, какова ваша конечная цель. Вы можете запустить запланированную задачу с опцией запуска только если пользователь вошел в систему, установленной на DISABLED. Вы можете использовать psexec с удаленной машины. Еще лучше, возможно, запустить процесс как службу. Проверьтеэтот поиск Google,этот другой поиск Google,эта тема, иэта другая темадля некоторых возможных зацепок в вашем поиске решения. В конечном счете, кажется, что нетточныйэквивалент nohup на компьютере с Windows.