nohup запускает процесс в фоновом режиме. Есть какой-нибудь аналог для винды?
Вы можете использовать команду start для запуска процесса в фоновом режиме командного окна.
command1
command2
start command3
command4
command2 ожидает завершения command1, но command4 не ждет завершения command3.
и если вам нужно работать независимо от пользователя, вошедшего в систему, вам нужно запустить процесс как службу, и вы можете использовать anysrv.exe
Вы можете посмотреть на службы Windows. Вы можете загрузить некоторые инструменты для размещения любого процесса в качестве службы Windows. Это приводит к тому, что процесс загружается в фоновом режиме при запуске Windows, поэтому, если он не требует взаимодействия с пользователем, вы сможете разместить его таким образом.
Комплект ресурсов Windows Server 2003
Инструмент, который вам нужен, называется 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
Чтобы предоставить пользователю joe возможность создавать запланированные задачи, вам необходимо изменить разрешение для папки% SystemRoot% \ Tasks. См. Здесь некоторую информацию по этому поводу: http://technet.microsoft.com/en-us/library/cc785125(WS.10).aspx
Все зависит от вашей конечной цели. Вы можете запустить запланированную задачу с возможностью запуска только в том случае, если пользователь вошел в систему и установлен на ОТКЛЮЧЕН. Вы могли бы использовать psexec с удаленной машины. Еще лучше запустить процесс как услугу. Проверять, выписываться этот поиск Google, этот другой поиск Google, эта тема, и этот другой поток для некоторых возможных потенциальных клиентов в поиске решения. В конечном итоге оказывается, что нет точный эквивалентно nohup на машине с Windows.