“ บริการเริ่มต้นสุทธิ” และ“ เริ่ม sc” อะไรคือความแตกต่าง?


70

บริการสามารถหยุดและเริ่มต้นได้โดยใช้สองคำสั่งใน Command Prompt Shell

  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] ike SC START, SC STOP ไม่รอให้บริการหยุด และจะกลับมาที่ STOP_PENDING บ่อยครั้งสำหรับการหยุดบริการหลายครั้ง ในทางกลับกัน NET STOP จะรอให้บริการหยุด ก่อนที่จะกลับไปที่พรอมต์คำสั่ง

...

NET และ SC มีแนวคิดที่แตกต่างกันในสิ่งที่พวกเขาคิดว่าเป็นเงื่อนไขแห่งความสำเร็จ คำถามที่ SC ถามเพื่อตรวจสอบว่ามันประสบความสำเร็จหรือไม่“ ฉันได้ส่งการควบคุมการหยุดไปยังบริการสำเร็จหรือไม่?” ถ้าเป็นเช่นนั้นไม่ว่าบริการจะหยุดทำงานหรือไม่ NET ถามคำถาม“ บริการที่ฉันพยายามจะหยุดกลับมาว่าหยุดได้หรือไม่” ถ้าเป็นเช่นนั้นก็เป็นไปตามเงื่อนไข หากไม่เป็นเช่นนั้นไม่ว่าด้วยเหตุผลอะไรก็ตาม NET ก็ล้มเหลวในการประสบความสำเร็จ


1
รายละเอียดที่น่าสนใจอันนี้ อาจเป็นประโยชน์ที่จะทราบสำหรับกรณีการเขียนสคริปต์ (ตัวแปร% ERRORLEVEL%) ขอบคุณ
Sopalajo de Arrierez

1
คำตอบนี้มีประโยชน์อย่างยิ่งสำหรับฉันเนื่องจากฉันพบข้อผิดพลาดในการเขียนสคริปต์เป็นระยะ ๆ พยายามที่จะทำความสะอาดไดเรกทอรีบริการหลังจากหยุดเนื่องจากไม่หยุดอย่างสมบูรณ์
johnt Entrepreneur

ฉันต้องการใช้ "sc config" แบบอะซิงโครนัสด้วยหรือไม่ มีวิธีสำหรับแบทช์ไฟล์รอจนกว่างานจะเสร็จสมบูรณ์จริงหรือไม่
เตอร์

3

สำหรับสิ่งที่คุ้มค่าฉันพบว่า sc start / stop มีความน่าเชื่อถือมากกว่า start / stop net บางครั้งการเริ่มต้น / หยุดสุทธิทำให้บริการติดค้างอยู่ในสถานะเริ่มต้น / หยุดขณะที่สิ่งนี้ไม่เคยเกิดขึ้นกับฉันด้วยการเริ่ม / หยุด sc อาการเริ่มต้น / หยุดสุทธิมีแนวโน้มที่จะเกิดขึ้นบ่อยครั้งถ้าบริการถูกฆ่า (ผ่าน taskkill) เช่นพยายามเริ่มบริการด้วยการเริ่มต้นสุทธิหลังจาก taskkill


2

เหลือที่จะบอกว่าถ้ารูทีน OnStart () ของบริการใช้เวลานานเกินไปให้NET STARTส่งคำสั่ง stop ไปยังบริการและส่งกลับข้อผิดพลาดต่อไปนี้:

บริการ ServiceName เริ่มต้น ........

ไม่สามารถเริ่มบริการ ServiceName ได้

บริการไม่ได้รายงานข้อผิดพลาด

ความช่วยเหลือเพิ่มเติมพร้อมใช้งานโดยการพิมพ์ NET HELPMSG 3534

สิ่งนี้เกิดขึ้นแม้ว่าบริการได้เริ่มต้นและหยุดทำงานเรียบร้อยแล้ว !!

ฉันพบโพสต์นี้ที่นี่ซึ่งอาจน่าสนใจ: ไม่สามารถเริ่มบริการได้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.