Есть ли способ запустить процессы в фоновом режиме в 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.

Другие вопросы по тегам