Dịch vụ bắt đầu trên mạng Sự khác biệt là gì?


70

Các dịch vụ có thể được dừng và bắt đầu sử dụng hai lệnh trong Command Prompt Shell.

  1. dịch vụ bắt đầu ròng "một số dịch vụ"
  2. sc bắt đầu "một số dịch vụ"

sự khác biệt giữa các lệnh này là gì?

Câu trả lời:


81

Trong Windows NT, cả hai lệnh truy cập cùng một Trình quản lý dịch vụ. Sự khác biệt chủ yếu ở phần hiển thị của người dùng:

  • net cũ hơn - từ thời MS-DOS và OS / 2, trên thực tế.

    scchỉ xuất hiện với Windows NT (không chắc là phiên bản nào) .

  • net chỉ có thể bắt đầu, dừng và tạm dừng dịch vụ.

    sc có các điều khiển nâng cao hơn, có thể truy vấn trạng thái, tạo và xóa dịch vụ, thay đổi cấu hình và bảo mật của chúng: sc config beep start= demand

  • net chỉ hoạt động tại địa phương.

    sc có thể được sử dụng qua mạng: sc \\snow start rpcapd

  • net chấp nhận tên hiển thị: net start "Windows Firewall"

    sc luôn yêu cầu tên dịch vụ: sc start SharedAccess


82

Câu trả lời của Grawity chắc chắn rất hữu ích, nhưng tôi đã tìm thấy một sự khác biệt cơ bản giữa các lệnh này được nêu chi tiết trên http://cbfive.com/command-line-service-manloyment-net-v-sc/ . Cụ thể, trang này lưu ý rằng hai lệnh này khác nhau về thời gian của chúng : "net" là đồng bộ và "sc" là không đồng bộ.

SC gửi điều khiển đến dịch vụ và sau đó quay lại dấu nhắc lệnh. Điều này thường dẫn đến SC START trả lại dịch vụ trong trạng thái START_PENDING. NET START sẽ đợi dịch vụ bắt đầu đến trạng thái bắt đầu hoàn toàn trước khi trả lại quyền kiểm soát tại dấu nhắc lệnh.

...

[L] ike SC START, SC STOP không đợi dịch vụ dừng lại và sẽ thường trả lại STOP_PENDING cho nhiều hoạt động dừng dịch vụ. Mặt khác, NET STOP sẽ đợi dịch vụ dừng lại trước khi nó quay trở lại dấu nhắc lệnh.

...

NET và SC có những ý tưởng khác nhau về những gì họ coi là điều kiện thành công. Câu hỏi mà SC yêu cầu để xác định xem nó có thành công hay không, có phải tôi đã gửi thành công quyền kiểm soát dừng cho dịch vụ không? NET đặt câu hỏi, dịch vụ Tôi đã cố gắng dừng lại, trả lại rằng nó đã dừng thành công chưa? Nếu được, thì nó đã thỏa mãn điều kiện. Nếu không, dù lý do là gì, thì NET thất bại trong điều kiện thành công


1
Một chi tiết thú vị, cái này. Có thể hữu ích để biết cho các trường hợp kịch bản (biến% ERRORLEVEL%). Cảm ơn.
Sopalajo de Arrierez

1
câu trả lời này rất hữu ích cho tôi vì tôi đang gặp phải các lỗi script không liên tục khi cố gắng dọn sạch thư mục dịch vụ sau khi dừng vì nó chưa dừng hoàn toàn.
johnt doanh nhân

tôi muốn sử dụng "sc config", điều đó có đồng bộ không? Có cách nào để một tệp bó chờ đợi cho đến khi tác vụ thực sự hoàn thành?
peter

3

Về giá trị của nó, tôi đã thấy sc start / stop đáng tin cậy hơn net start / stop. Đôi khi net start / stop khiến dịch vụ bị kẹt trong trạng thái Bắt đầu / Dừng trong khi điều này chưa bao giờ xảy ra với tôi khi bắt đầu / dừng sc. Triệu chứng bắt đầu / dừng mạng có xu hướng xảy ra thường xuyên hơn nếu dịch vụ bị giết (thông qua taskkill), ví dụ: cố gắng bắt đầu dịch vụ với khởi động mạng sau khi thực hiện nhiệm vụ.


2

Còn lại để nói rằng nếu thói quen OnStart () của dịch vụ mất quá nhiều thời gian, hãy NET STARTgửi lệnh dừng đến dịch vụ và trả về lỗi sau:

Dịch vụ ServiceName đang bắt đầu ........

Dịch vụ ServiceName không thể khởi động.

Dịch vụ không báo lỗi.

Thêm trợ giúp có sẵn bằng cách gõ NET HELPMSG 3534.

Điều này xảy ra mặc dù dịch vụ đã được bắt đầu và dừng thành công !!

Tôi cũng tìm thấy bài đăng này ở đây, điều đó có thể thú vị: Không thể bắt đầu dịch vụ

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.