Команда службы остановки Windows

Обновлено: 21.11.2024

Команда NET используется для управления службами следующим образом:

Список основных служб:

СЛУЖБЫ NET HELP

Список работающих служб:

Остановите службу диспетчера очереди печати и, в случае успеха, перезапустите ее снова:

Спулер NET STOP && NET START spooler

Чтобы использовать длинное имя службы, заключите его в кавычки:

NET STOP "Прослушиватель домашней группы"

Коды ошибок/возврата

В отличие от SC, команда NET не возвращает задокументированные коды возврата класса Win32_Service (служба не активна, время ожидания запроса на обслуживание и т. д.) и для многих ошибок возвращает уровень ошибки 2.

Она будет однако выводит на экран собственные ошибки:

"Таблица служб заблокирована. Чтобы получить дополнительную помощь, введите NET HELPMSG 2180"
"Таблица служб заполнена. Чтобы получить дополнительную справку, введите NET HELPMSG 2181"
"Запрашиваемая служба уже запущена. Для получения дополнительной справки введите NET HELPMSG 2182"
"Недопустимое имя службы. Чтобы получить дополнительную справку, введите NET HELPMSG 2185"
"Служба не отвечает на функцию управления. NET HELPMSG 2186"
"Управление службой занято. NET HELPMSG 2187"
"Неверное имя сервисной программы. NET HELPMSG 2188"
" Не удалось управлять службой в ее текущем состоянии. Чтобы получить дополнительную справку, введите NET HELPMSG 2189"
"Служба завершилась аварийно. Чтобы получить дополнительную справку, введите NET HELPMSG 2190"
"Запрошенная пауза или остановка недействительны для этой службы. Чтобы получить дополнительную справку, введите NET HELPMSG 2191 "
" не удалось найти имя службы. Чтобы получить дополнительную справку, введите NET HELPMSG 2192"
"Ошибка чтения канала диспетчера управления службами. Для получения дополнительной справки введите NET HELPMSG 2193"
"Не удалось создать поток для новой службы. Для получения дополнительной справки введите NET HELPMSG 2194"

Вы можете обнаружить эти ошибки, выполнив поиск в выходном тексте с помощью команды FIND следующим образом:

Оповещатель NET START 2>&1|FIND "2182"
IF errorlevel 1 goto :sub_already_started

Связанные команды:

NET.exe — управление сетевыми ресурсами.
РЕЖИМ — настройка системного устройства.
SC - Служба контроля.
PsService — просмотр и управление службами.
СЛУЖБА WMIC — доступ к службам WMI.
Список служб Windows

Эквивалент PowerShell:
Get-Service — получение списка служб.
New-Service — создание новой службы.
Restart-Service — остановить и перезапустить службу.
Resume-Service — Возобновление приостановленной службы.
Set-Service — изменить режим запуска/свойства службы.
Start-Service — запуск остановленной службы.
Stop-Service — остановить работающую службу.
Эквивалентная команда bash (Linux): start-stop-daemon — запускать и останавливать программы системного демона.

Если вы управляете службами Windows и вам удобно работать из командной строки, то команда Windows NET.EXE должна быть в вашем наборе инструментов. Используйте его, чтобы легко запускать, останавливать, приостанавливать или перезапускать любую службу из командной строки с повышенными привилегиями или в удобном сценарии или пакетном файле.

Использование NET для остановки службы Windows

Чтобы остановить службу, запустите:

где имя службы. Обязательно заключите его в кавычки, если он содержит пробел!

Например, чтобы остановить службу диспетчера очереди печати (с именем «Диспетчер очереди»), выполните:

Вот как это выглядит на нашем компьютере с Windows Server 2016:

Обратите внимание, что команда NET будет ждать остановки службы, прежде чем продолжить. Единственным исключением является случай, когда служба не отвечает или требуется более 30 секунд для выполнения требований.

Запуск службы Windows с помощью NET

Чтобы запустить бездействующую службу Windows, выполните:

Если все пойдет хорошо, ваша служба (и любая другая служба, от которой зависит ее работа) будет запущена через несколько секунд:

Как перезапустить службу Windows с помощью NET.EXE

Чтобы перезапустить службу, скажем, из пакетного файла, объедините команды "net stop" и "net start" следующим образом:

NET также будет приостанавливать и возобновлять службы Windows

Не все службы поддерживают паузу и возобновление работы, но если у вас есть служба, которая поддерживает NET, она тоже может пригодиться.

Чтобы приостановить службу, введите:

Чтобы возобновить приостановленную службу, выполните:

Вам также может понравиться.

AlwaysUp версии 13: простая установка Dropbox, OneDrive, Java и других сервисов в качестве служб Windows; Полная поддержка.

28 ответов на вопрос Основные инструменты для служб Windows: команда NET

При использовании команды NET в пакетном режиме для перезапуска я рекомендую добавить время для реакции служб. Я сделал это для одного из моих сервисов, который имеет тенденцию зависать. См. ниже;

@ЭХО.
@ECHO Остановка служб, подождите 10 секунд…

@ECHO OFF
Служба остановки REM

NET STOP ServiceNameHere

REM Ниже приведен таймер, позволяющий очистить оперативную память сервера после остановки службы.
REM Используйте числовое значение в командной строке 'timeout', чтобы контролировать, сколько секунд будет длиться пауза.

TIMEOUT /t 10 /NOBREAK
ЭХО.

NET START ServiceNameЗдесь

У меня есть вопрос, если мне нужно запустить несколько служб, а для запуска этих служб требуется более 30 секунд, то как я могу добиться этого, поскольку в настоящее время происходит сбой с ошибкой "время ожидания 'net' истекло через 30 секунд".

Благодарим за ранний ответ. спасибо

Привет. Мы рекомендуем создать пакетный файл, который использует команду SC, чтобы остановить службу и проверить ее позже.

Чтобы остановить службу с помощью SC, используйте:
имя службы SC STOP

Чтобы проверить, была ли служба успешно остановлена ​​(после ожидания более 30 секунд), используйте следующую команду:
SC QUERY servicename | НАЙТИ «СОСТОЯНИЕ» | НАЙТИ «ОСТАНОВЛЕНО»

Переменной %ERRORLEVEL% будет присвоено значение 1, если служба не находится в состоянии "Остановлена".

Эта статья может содержать дополнительные рекомендации.

Мне нужен сценарий для проверки способности пользователей запускать службу. Несколько пользователей на нескольких серверах. Могу ли я сделать это с помощью команд SC или NET?

Если вы не против попробовать запустить службу, вы также можете использовать NET START и искать ошибки, как показано в примере на этой странице.

сэр нет, остановите telnet, как использовать эту команду

Обратите внимание, что если имя службы состоит из двух или более слов, его необходимо заключить в кавычки. Мне потребовалось время, чтобы найти это!

Я хочу перезапустить службы на нескольких серверах Windows, и это займет около 1 минуты. Я пытался использовать NET STOP, но он не ждал и просто выполнил следующую команду для запуска. Может кто-нибудь помочь мне с точным сценарием, который я могу использовать для перезапуска служб на нескольких серверах.

NET STOP будет ждать остановки службы только около 30 секунд. Если служба занимает больше нескольких секунд, NET выдаст сообщение «Невозможно дождаться».

К сожалению, нет способа заставить NET STOP «подождать дольше». И утилита SC ничем не поможет, она даже не пытается ждать.

Мы рекомендуем использовать пакетный файл «safeServiceStop.bat» (или «safeServiceRestart.bat»), описанный в этой статье.

Сохраните пакетный файл в своей файловой системе и вызовите его из существующего пакетного файла. Обратите внимание, что вы должны добавить «localhost» при вызове нового пакетного файла. Например, чтобы остановить службу под названием «Диспетчер очереди», используйте

safeServiceStop localhost Spooler

Обратите внимание, что рекомендуемое решение будет ожидать остановки службы неопределенное время. Если служба никогда не останавливается, ваш скрипт зависнет.

ОБНОВЛЕНИЕ 27.08.2018. Мы создали бесплатную утилиту командной строки (называемую ServicePilot), которая будет ждать столько, сколько вам нужно, при остановке службы. Вы можете использовать его вместо рекомендованного выше пакетного файла — это гораздо более простая альтернатива.

При использовании ServicePilot обязательно укажите соответствующее значение для флага "-wait". Например, чтобы остановить службу диспетчера очереди печати, если для ее выполнения может потребоваться 5 минут (300 секунд), используйте:

Обратите внимание, что служба будет принудительно остановлена, если она не остановится корректно в течение заданного периода времени.

Остановить службу Тобии. Не принимает команду Net Start, а Sc start, говорит что команда неверная, имя службы (Tobii Service)

Какую команду вы используете, чтобы остановить Тобии?

Убедитесь, что вы указываете имя службы. И заключите имя в кавычки, если оно содержит пробел!

Это было правильно, я поставил имя без ("), поэтому это было неправильно, теперь это сработало. Чистый старт «Тобии Сервис»

Если я использую net stop и net start на специальной службе, которая перестала работать правильно, это не помогает, она все еще работает неправильно.
Но при перезапуске той же службы из services.msc служба сбрасывается правильно. В чем разница?

(название сервиса состоит из одного слова, так что проблема не в кавычках..)

Выводит ли NET STOP/START какие-либо сообщения об ошибках на консоль? Возможно, он дает сбой и фактически не останавливает/запускает службу.

Распространенная проблема: NET STOP/START завершится ошибкой, если у вас недостаточно прав. Убедитесь, что вы работаете в командной строке с повышенными правами (начиная с «Запуск от имени администратора»).

Спасибо. Сообщений об ошибках нет, просто пишет, что служба остановлена. И да, я запускаю его на повышенных настройках.
Я попробую тайм-аут с первого комментария в следующий раз, когда буду за компьютером.

Очень распространенная проблема при работе с командами net или SC и некоторыми пользовательскими службами заключается в том, что вам нужно указать «Имя службы», а не «Отображаемое имя». Часто они совпадают, но не всегда. Щелкните правой кнопкой мыши службу в службах.msc, чтобы увидеть два на вкладке «Общие» и убедиться, что вы делаете «имя службы Net Start» — и, как сказано выше, вам все равно придется заключать его в кавычки, если в нем есть пробелы.

Вы можете изменить имя с помощью sc, чтобы сделать его проще, если хотите, но очевидно, что это может быть плохой идеей с системными/Windows-сервисами.

Кстати, я знаю, что в статье действительно говорится об этом, но ссылка на «название службы», которая объясняет это, довольно тонкая, и я думаю, что люди могут этого не заметить.

Спасибо, что указали на важную разницу между «Именем службы» и «Отображаемым именем».

Да, мы упомянули в статье о необходимости использовать «Имя службы», но, возможно, есть способ сделать его более заметным. Мы подумаем над этим — дайте нам знать, если у вас есть идеи, которые не отвлекают от основной темы статьи (использование NET).

Обратите внимание, что наша бесплатная утилита ServicePilot (более полнофункциональная альтернатива NET.EXE) устраняет путаницу в именах, принимая как «Имя службы», так и «Отображаемое имя». Вы можете использовать любой из них!

В центре внимания искусство. Удивительно из-за. Это дало мне, возможно, лучшую задачу. ровно через 30 секунд после входа в систему, одновременно с разрешением рабочего стола в моей системе запуска SSD, я наблюдаю, как слегка модифицированная версия вашего скрипта отключает службу Synergy, а затем включает ее примерно через 20 секунд. До сих пор при каждом входе в систему в течение ~ 6 месяцев с момента получения Synergy приходилось щелкать значок на панели задач для Synergy, а затем останавливать и запускать программу, потому что она не запускает клики клиента, пока служба не перезапустится. Просто лучший. Вот мой модифицированный скрипт:
@ECHO.
@ECHO Остановка служб, подождите 10 секунд…

@ECHO OFF
Служба остановки REM

Синергия NET STOP

TIMEOUT /t 10 /NOBREAK
ЭХО.

Синергия NET START

забыл поблагодарить ВАС, основные технологии, за недавнюю помощь в запуске моего ПЛАНИРОВЩИКА ЗАДАНИЙ... хотя и на совершенно другом компьютере, чем тот, который упоминался выше.

Если служба не запущена, START не произойдет, если вы не отформатируете его следующим образом:

чистая остановка
чистая начальная

Если служба не запущена, первая строка выдаст ошибку и выдаст ошибку, а вторая подхватит и запустит службу.

Я хочу перезапускать определенную службу в определенное время каждую неделю.

если я воспользуюсь указанными выше командами, будет ли это работать?

и если не удастся остановить службу, получу ли я какое-либо уведомление по электронной почте или есть ли способ получить уведомление по электронной почте мне, если что-то пойдет не так?

также, если перезагрузка с пакетным файлом будет выполнена успешно, я все равно получу уведомление вместо входа в систему и проверки журналов Windows

Да — вы можете использовать приведенные выше команды NET в сочетании с планировщиком заданий Windows для перезапуска определенной службы в определенное время. Мы добавим в блог статью с подробностями и сообщим вам, когда она будет готова.

К сожалению, в Windows нет простого встроенного способа уведомить вас об успешном или неудачном выполнении операции службы. Некоторые администраторы крупных сайтов настроили инструменты, которые отслеживают важные события в журнале событий и доставляют оповещения, но это может быть излишним, если вы не работаете в корпоративной среде.

Сообщите нам, если это решение вам не подходит.

У меня есть два пакетных файла, написанных в моем приложении для остановки и запуска службы Windows.
Есть ли способ проверить состояние указанной службы (независимо от того, остановлена ​​она или нет) и перезапустить ее в определенное время в течение дня?
Для большей ясности:
Служба приложений останавливается, скажем, в 23:00 и снова запускается в 23:15.
Есть ли способ написать временные условия для перезапуска скрипта, исключая продолжительность 23:00-23:15?

Извините, если это не имеет особого смысла.

Привет. Вы можете использовать этот простой пакетный файл, чтобы проверить, запущена служба или нет:

Сохраните эти строки в новом файле .BAT и передайте имя службы (не отображаемое имя) в качестве первого параметра.

Что касается остановки в определенное время и перезапуска в другое время, мы рекомендуем использовать планировщик заданий Windows.

Создайте базовую задачу, которая останавливает службу в 23:00 (командный файл с запуском NET STOP), а другую — запуск службы в 23:15 (с NET START).
Этот процесс описан в разделе "Перезагрузка несколько раз в день (с помощью планировщика заданий Windows)" этой статьи по теме.

Как вручную завершить процесс службы Windows, находящийся в стеке в состоянии «Остановка» или «Запуск»? Большинство администраторов Windows сталкивались с проблемой, когда они пытались запустить/остановить/перезапустить службу, но она застряла в статусе «Остановка» (или «Запуск»). Вы не сможете остановить эту службу из консоли управления службами ( services.msc ), так как все кнопки управления этой службой становятся неактивными (серыми). Самый простой способ — перезагрузить Windows, но это не всегда приемлемо.Давайте рассмотрим альтернативные способы, которые позволяют принудительно убить зависшую службу или процесс Windows без перезагрузки системы.

Если в течение 30 секунд после попытки остановить службу она не останавливается, Windows выводит следующее сообщение:

Тайм-аут, в течение которого диспетчер управления службами ожидает запуска или остановки службы, можно изменить с помощью параметра реестра ServicesPipeTimeout. Если служба не запускается в течение указанного времени ожидания, Windows отправляет в средство просмотра событий сообщение об ошибке (идентификатор события: 7000, 7009, 7011, время ожидания достигло 30000 миллисекунд). Вы можете увеличить этот тайм-аут до 60 секунд, например:

reg add HKLM\SYSTEM\CurrentControlSet\Control /v ServicesPipeTimeout /t REG_SZ /d 600000 /f

Это полезно при запуске/остановке тяжелых служб, у которых не хватает времени для корректного завершения всех процессов и закрытия файлов (например, MS SQL Server).

Если вы попытаетесь остановить такую ​​службу из командной строки: net stop wuauserv, появится сообщение:

Как принудительно завершить зависшую службу Windows с помощью TaskKill?

Самый простой способ остановить зависшую службу — использовать встроенный инструмент командной строки taskkill. В первую очередь нужно найти PID (идентификатор процесса) сервиса. В качестве примера возьмем службу Windows Update. Его системное имя — wuauserv (имя можно проверить в свойствах службы в консоли services.msc).

Очень часто наблюдается зависание службы установщика модулей Windows при перезапуске сервера, особенно после установки обновлений на Windows Server 2012 R2 и 2016.

Важно. Быть внимательным. Принудительное завершение работы критически важных служб Windows может привести к BSOD или неожиданному перезапуску системы.

Выполните эту команду в командной строке с повышенными привилегиями (это важно, иначе появится ошибка отказа в доступе):
sc queryex wuauserv
В нашем случае PID службы wuauserv — 9186.
Чтобы принудительно завершить зависший процесс с PID 9186, выполните команду:

taskkill/PID 9168/F

Эта команда принудительно завершит процесс службы. Теперь вы можете запустить службу с помощью команды sc start servicename или через консоль управления службой

Вы можете более элегантно остановить зависшую службу, не проверяя вручную PID процесса службы. Инструмент taskkill имеет параметр /FI, который позволяет использовать фильтр для выбора необходимых служб или процессов. Вы можете убить конкретную службу с помощью команды:

taskkill /F /FI "УСЛУГИ eq wuauserv"

Или можно вообще пропустить имя службы и убить все службы в зависшем состоянии командой:

taskkill /F /FI "статусный эквалайзер не отвечает"

После этого сервис, находящийся в стеке в статусе Stopping, должен остановиться.

Вы также можете использовать утилиту taskkill, чтобы принудительно остановить службы зависания на удаленном компьютере:

taskkill /S mun-fs01 /F /FI "УСЛУГИ eq wuauserv"

Принудительно остановить зависшую службу Windows с помощью PowerShell

Вы также можете использовать PowerShell для принудительной остановки службы. С помощью следующей команды вы можете получить список служб в состоянии «Остановка»:

Get-WmiObject -Class win32_service | Где-объект

Или в начальном состоянии:

Get-WmiObject -Class win32_service | Где-объект

Командлет Stop-Process позволяет завершить процессы всех найденных служб. Следующий сценарий PowerShell завершит все зависшие сервисные процессы в Windows:

$Services = Get-WmiObject -Class win32_service -Filter "state = 'stop pending'"
if ($Services) foreach ($service in $Services) try Stop-Process -Id $service.processid - Force -PassThru -ErrorAction Stop
>
catch Write-Warning -Message "Ошибка. Сведения об ошибке: $_.Exception.Message"
>
>
> < br />else Write-Output "Нет служб с 'Stopping'.status"
>

Вы должны использовать Get-CimInstance вместо командлета Get-WmiObject в новом PowerShell Core 6.x/7.x. Замените первую команду скрипта на:

$Services = Get-CimInstance -Class win32_service | где-состояние объекта -eq 'ожидание остановки'

Анализ цепочек ожидания зависших служб с помощью ResMon

Вы можете определить процесс, вызвавший зависание службы, с помощью resmon.exe (Монитор ресурсов).

  1. В окне Resource Monitor перейдите на вкладку CPU и найдите зависший сервисный процесс;
  2. Выберите пункт «Анализ цепочки ожидания» в контекстном меню.
  3. В новом окне вы, скорее всего, увидите, что ваш процесс ожидает другого процесса. Завершите процесс. Если вы ждете svchost.exe или другой системный процесс, вам не нужно его завершать. Попробуйте проанализировать цепочку ожидания для этого процесса. Найдите PID процесса, которого ожидает ваш svchost.exe, и завершите его.
  4. Удаление зависшей службы с помощью Process Explorer

    Даже локальный администратор не может завершить некоторые процессы, запущенные под учетной записью SYSTEM. Дело в том, что у учетной записи администратора просто нет прав на некоторые процессы или службы. Чтобы остановить такой процесс (службу), нужно дать права на службу (процесс) локальной группе Администраторов, а затем убить их. Для этого нам понадобятся две небольшие утилиты: psexec.exe и ProcessExplorer (доступны на сайте Microsoft).

    Обратите внимание, что разрешение на использование службы предоставляется временно, пока она не будет перезапущена. Чтобы предоставить постоянные разрешения для службы, следуйте статье Установка разрешений для службы Windows.

    Не удалось найти общий ответ. Как остановить их от командной строки .cmd? Кроме того, потребуется ли запускать от имени администратора?

    Кроме того, как я могу остановить службу арбитра, названную по ее имени? Некоторые из них являются специфическими исполняемыми файлами, некоторые - svchost, и я не могу просто завершить их через диспетчер процессов, поскольку они могут размещать жизненно важные службы. I event не может управлять тем, какой хост svchost какой?

    3 ответа 3

    Чтобы остановить службу, используйте net stop

    Для запуска службы используйте net start

    Оба они должны запускаться из командной строки с повышенными привилегиями.

    Чтобы отключить службу, используйте sc config "Имя службы" start= disabled

    Это также необходимо запускать из командной строки с повышенными привилегиями.

    Наконец, список сервисов и их состояний находится в реестре по адресу:

    Или

    Вы можете ввести services.msc в строку cmd, и вы получите список

    Примечательно, что не все службы видны через пользовательский интерфейс, поэтому для поиска определенных системных служб или драйверов может потребоваться обращение к реестру.

    Для взаимодействия со службами требуются права администратора.

    Чтобы просмотреть список установленных служб, введите (эта команда не требует прав администратора):

    Powershell также можно использовать, тогда это будет:

    Чтобы запустить службу, введите:

    Или с помощью PowerShell:

    Чтобы остановить службу, введите:

    Или с помощью PowerShell:

    Обратите внимание, что у сервисов есть длинное и короткое имя. Например: «Центр обновления Windows» также известен как wuauserv. Ввод услуги, содержащей пробел, необходимо заключать в кавычки.

    Чтобы изменить тип запуска службы (например, автоматический или отключенный), используйте:

    Или с помощью Powershell:

    Очевидно, что -name и -displayname работают как для автоматического, так и для отключенного типа запуска, это просто пример.

    Учитывая, что вы также упоминаете Microsoft OneDrive, имейте в виду, что OneDrive очень упрямый и, скорее всего, сможет активировать себя при открытии проводника. Если вы не хотите использовать OneDrive, выберите Пуск->Установка и удаление программ и удалите Microsoft OneDrive.

    Две команды для отключения сервисов:

    1. net start для получения списка имен запущенных служб
    2. net stop "название службы", чтобы остановить службу

    Сервис — это почти такая же программа, как и любая другая. Отличие сервисов от других программ заключается в том, что они работают в фоновом режиме и не имеют пользовательского интерфейса, на который можно нажать или нажать. Они предназначены для предоставления основных функций операционной системы, таких как веб-обслуживание, ведение журнала событий, обслуживание файлов, печать или отчеты об ошибках.

    Не все службы разработаны корпорацией Майкрософт. Некоторые приложения и драйверы устанавливают свои собственные службы. Пакеты безопасности являются очень хорошим примером, поскольку они устанавливают различные службы для обеспечения мониторинга в реальном времени действий вашей системы, защиты брандмауэра и т. д. Эти пакеты должны использовать преимущества, предоставляемые службами.Одним из таких преимуществ является то, что их можно запускать во время загрузки системы, перед другими программами и даже до входа в систему. Но самое главное преимущество заключается в том, что они могут отслеживать все, что выполняется на вашем компьютере, при этом они идеально интегрированы в ядро ​​Windows. Таким образом, они могут обеспечить очень высокий уровень защиты.

    Другим примером службы, не принадлежащей Microsoft, может быть сервер SSH, часто используемый в офисах для безопасных удаленных подключений, или служба автоматического обновления для вашего веб-браузера, такая как служба технического обслуживания Mozilla.

    Иногда может быть полезно знать, что и когда служба делает. Например, если вы знаете, что вам не понадобятся его функции, вы можете отключить их, чтобы ускорить работу вашей системы. Если у вас установлен маршрутизатор для управления вашей локальной сетью, скорее всего, вам не нужна служба общего доступа к подключению к Интернету. Или, если вам нужно запустить службу, но это не так важно, вы можете настроить ее запуск немного позже, после запуска Windows, автозапуска приложений или других, более важных служб. В моем случае один из сервисов, который мне нужен, но от которого не зависит моя жизнь, — это сервис Windows Time, который синхронизирует дату и время. Поэтому я решил установить отложенный запуск.

    Читайте также: