"Послуга чистого старту" та "sc start". Яка різниця?


70

Служби можна зупинити та запустити за допомогою двох команд у командному рядку оболонки.

  1. послуга чистого старту "деяка послуга"
  2. sc start "деяка послуга"

яка різниця між цими командами?

Відповіді:


81

У Windows NT обидві команди отримують доступ до одного і того ж диспетчера послуг. Різниця полягає головним чином у видимій для користувача частині:

  • net старше - насправді з часів MS-DOS та OS / 2.

    scз'явився лише з Windows NT (не впевнений, яка версія) .

  • net можна лише запускати, зупиняти та призупиняти послуги.

    sc має більш вдосконалені елементи керування, може запитувати стан, створювати та видаляти служби, змінювати їх конфігурацію та безпеку: sc config beep start= demand

  • net працює лише локально.

    sc може використовуватися через мережу: sc \\snow start rpcapd

  • net приймає відображувані імена: net start "Windows Firewall"

    sc завжди потрібна назва послуги: sc start SharedAccess


82

Відповідь Grawity, безумовно, корисна, але я знайшов принципову різницю між цими командами, детально описаними на http://cbfive.com/command-line-service-management-net-v-sc/ . Зокрема, на цій сторінці зазначається, що ці дві команди відрізняються за часом : "net" є синхронним, а "sc" - асинхронним.

SC надсилає керування в сервіс, а потім повертається до командного рядка. Зазвичай це призводить до того, що SC START поверне послугу в стані START_PENDING. NET START буде чекати, коли послуга починає доходити до повністю запущеного стану, перш ніж поверне управління в командному рядку.

...

[L], наприклад, SC START, SC STOP не чекає, коли сервіс припиниться, і буде часто повертати STOP_PENDING для багатьох операцій зупинки обслуговування. З іншого боку, NET STOP буде чекати, коли сервіс припиниться, перш ніж він повернеться до командного рядка.

...

NET і SC мають різні уявлення про те, що вони вважають умовами успіху. Питання, яке SC просить визначити, чи було воно успішним, це: "Чи вдало я надіслав стоп-контроль до сервісу?" NET задає питання: "Чи повернув сервіс, який я намагався зупинити, він успішно зупинився?" Якщо цього не сталося, незалежно від причини, NET не вдається досягти успішної умови


1
Цікава деталь, ця. Може бути корисно знати для сценаріїв сценаріїв (% ERRORLEVEL% змінної). Дякую.
Sopalajo de Arrierez

1
ця відповідь для мене дуже корисна, оскільки я відчуваю періодичні помилки сценаріїв, намагаючись очистити каталог служб після її зупинки, оскільки вона повністю не зупинена.
johnt предприниматель

Я хочу використовувати "sc config", це також асинхронний? чи є спосіб, щоб пакетний файл зачекав, поки завдання буде фактично виконано?
пітер

3

Наскільки це варте, я знайшов sc start / stop більш надійним, ніж чистий старт / стоп. Іноді чистий пуск / зупинка спричиняв, що послуга застрягла у старті запуску / зупинки, тоді як цього мені ще не траплялося при запуску / зупинці sc. Симптом чистого запуску / зупинки, як правило, виникає частіше, якщо сервіс був убитий (через завдання завдання), наприклад, спроба запустити службу з чистого запуску після завдання.


2

Залишився сказати, що якщо програма OnStart () служби триває занадто довго, NET STARTвідправляє в службу команду stop і повертає таку помилку:

Починає послуга ServiceName ........

Не вдалося запустити службу ServiceName.

Служба не повідомила про помилку.

Додаткову допомогу можна отримати, ввівши NET HELPMSG 3534.

Це відбувається, хоча послуга була запущена та успішно припинена !!

Я також знайшов цю публікацію тут, що може бути цікавим: Сервіс не вдалося запустити

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.