ตั้งค่าการดำเนินการกู้คืนที่จะเกิดขึ้นเมื่อบริการล้มเหลว


10

ฉันได้ติดตั้งบริการที่เป็นลายลักษณ์อักษรที่กำหนดเองจำนวนมากของเราลงในกล่อง windows (ไม่สำคัญว่า XP, Server, Vista) ฉันมักจะกำหนดค่าให้ "เริ่มบริการใหม่" ในวันที่ 1, 2 และความล้มเหลวที่ตามมา แต่ฉันไม่เคยเห็นงานนี้เลย บริการหยุดเพียงแค่ (เนื่องจากข้อผิดพลาดหรือบางสิ่งบางอย่างในรหัส) แต่ไม่รีสตาร์ท

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

ขอบคุณมาร์ค

คำตอบ:


3

หากบริการของคุณหยุดเนื่องจากข้อผิดพลาดที่ถูกบันทึกโดย windows ดังนั้นใช่คุณต้องทำเครื่องหมาย 'เปิดใช้งานการดำเนินการสำหรับข้อผิดพลาด' มิฉะนั้นจะไม่สามารถใช้งานได้

หากคุณไม่ได้ทำเครื่องหมายไว้มันจะรีสตาร์ทเฉพาะบริการที่หยุดทำงานด้วยเหตุผลที่ชอบด้วยกฎหมายหรือไม่ทราบสาเหตุ


1
ขอบคุณ - ฉันคิดแบบนั้น แต่ฉันจะคิดว่า "ผิดพลาด" จะเป็นเช่นเดียวกับ "ความล้มเหลว" และบริการจึงควรเริ่มต้นโดยไม่ทำเครื่องหมายในช่อง
M Schenkel

มันดูแปลก ๆ ที่ฉันเห็นด้วยเนื่องจากเหตุผลส่วนใหญ่ที่การบริการจะล้มเหลวคุณจะคิดว่าเป็นข้อผิดพลาด
Sam Cogan

2
ไม่มีการดำเนินการกู้คืนใด ๆ ที่จะถูกเรียกใช้บริการที่หยุดเพราะเหตุผล "ถูกกฎหมาย" คำตอบนี้ยังทำให้เกิดความสับสนตามเงื่อนไข "หยุด" และ "ล้มเหลว"
matpop

3
ใครก็ตามที่ Microsoft ที่เขียนภาษานี้ควรถูกเฆี่ยนอย่างไม่รู้จบ
Brain2000

16

ช่องทำเครื่องหมาย "เปิดใช้งานการดำเนินการเมื่อหยุดด้วยข้อผิดพลาด" ถูกนำมาใช้กับ Windows Vista และ Windows Server 2008 โดยมีบรรทัดเอกสารที่น่าอายเพียงบรรทัดเดียว:

เลือกเปิดใช้งานการดำเนินการสำหรับหยุดพร้อมกับข้อผิดพลาดเพื่อทริกเกอร์การดำเนินการกู้คืนที่บริการหยุดทำงานด้วยข้อผิดพลาด

SC.exefailureflagโปรแกรมยังได้รับการปรับปรุงเพื่อให้คำสั่งใหม่: เอกสารแสดงให้เห็นตัวอย่างที่ไม่ดีและไม่ได้จริงๆนำไปใช้กับ Windows Server 2003 แต่บอกเราว่าคำสั่ง:

ระบุว่าการดำเนินการกู้คืนจะถูกทริกเกอร์หรือไม่เมื่อบริการหยุดทำงานเนื่องจากข้อผิดพลาด

ดังนั้นช่องทำเครื่องหมายและsc failureflagใช้ในการตั้งค่าสถานะเดียวกัน
ลองพิมพ์sc failureflagcommand prompt ในที่สุดเราก็ได้คำอธิบายที่ค่อนข้างดีมาแล้ว:

เปลี่ยนการตั้งค่าสถานะการกระทำที่ล้มเหลวของบริการ หากการตั้งค่านี้เป็น 0 (ค่าเริ่มต้น) Service Control Manager (SCM) จะเปิดใช้งานการดำเนินการล้มเหลวที่กำหนดค่าไว้ในบริการเฉพาะเมื่อกระบวนการบริการสิ้นสุดลงด้วยบริการในสถานะอื่นที่ไม่ใช่ SERVICE_STOPPED หากการตั้งค่านี้เป็น 1 SCM จะเปิดใช้งานการดำเนินการล้มเหลวที่กำหนดไว้ในบริการหากบริการเข้าสู่สถานะ SERVICE_STOPPED ด้วยรหัสทางออก Win32 ที่ไม่ใช่ 0 นอกเหนือจากการยกเลิกกระบวนการบริการดังกล่าวข้างต้น การตั้งค่านี้จะถูกข้ามหากบริการไม่ได้กำหนดค่าความล้มเหลวไว้

คำอธิบายที่คล้ายกันสามารถพบได้ที่นี่
ดังนั้นคำตอบที่ถูกต้องสำหรับคำถามต้นฉบับคือ: การกระทำการกู้คืนที่กำหนดไว้จะมีผลเสมอเมื่อบริการของคุณไม่ได้สิ้นสุดในสถานะ SERVICE_STOPPED "เปิดใช้งานการดำเนินการสำหรับการหยุดด้วยข้อผิดพลาด" ต้องตรวจสอบหากคุณต้องการเปิดใช้งานการดำเนินการกู้คืนด้วยเมื่อบริการของคุณเข้าสู่สถานะ SERVICE_STOPPED โดยที่รหัสทางออกไม่ใช่ 0 (ข้อผิดพลาด)


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