Есть ли способ запустить процессы в фоновом режиме в Windows? эквивалент nohup для windows
nohup запускает процесс в фоновом режиме. Есть какой-нибудь эквивалент для Windows?
4 ответа
Вы можете использовать команду запуска для запуска процесса в фоновом режиме командного окна.
command1
command2
start command3
command4
команда2 ждет, пока команда1 не завершит, но команда 4 не ждет, когда команда 3 завершится.
и если вам нужно работать независимо от пользователя, вошедшего в систему, вам нужно запустить процесс как службу, и вы можете использовать anysrv.exe
Возможно, вы захотите взглянуть на службы Windows. Есть несколько инструментов, которые вы можете скачать, чтобы разместить любой процесс в качестве службы Windows. Это приводит к загрузке процесса в фоновом режиме при запуске Windows, поэтому при условии, что он не требует взаимодействия с пользователем, вы сможете разместить его таким образом.
Windows Server 2003 Resource Kit
Инструмент, который вам нужен, называется 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, эту ветку и эту другую ветку для поиска возможных потенциальных клиентов в поиске решения. В конечном итоге кажется, что на машине с Windows нет точного эквивалента nohup.