जवाबों:
सेवा एप्लिकेशन के तहत, प्रश्न में सेवा के गुणों का चयन करें।
पुनर्प्राप्ति टैब देखें - सभी प्रकार के विकल्प हैं - मैं सेवा को पुनरारंभ करने के लिए पहला और दूसरा विफलता सेट करूंगा, तीसरा एक बैच प्रोग्राम चलाने के लिए जो कि बीएलएटी को तीसरी विफलता अधिसूचना के साथ एक ईमेल है।
आपको प्रतिदिन फेल काउंट को रीसेट करने के लिए Reset Fail Count को 1 पर सेट करना चाहिए।
संपादित करें:
ऐसा लगता है कि आप एक कमांड लाइन के माध्यम से ऐसा कर सकते हैं:
SC failure w3svc reset= 432000 actions= restart/30000/restart/60000/run/60000
SC failure w3svc command= "MyBatchFile.cmd"
आपकी MyBatchFile.CMD फ़ाइल इस तरह दिख सकती है:
blat - -body "Service W3svc Failed" -subject "SERVICE ERROR" -to Notify@Example.com -server SMTP.Example.com -f Administrator@Example.com
SC failure w3svc command= "MyBatchFile.cmd"
पथ या C: \ Windows \ System32 में होना चाहिए। यदि आप एक पूर्ण पथ का उपयोग करते हैं, तो आप इसे किसी भी निर्देशिका में रख सकते हैंSC failure w3svc command= "c:\Stuff\MyBatchFile.cmd"
Services.msc खोलें, सेवा के गुणों को खोलने के लिए सेवा पर डबल-क्लिक करें, एक रिकवरी टैब है और उन सेटिंग्स को आपको विफलता पर सेवा को फिर से शुरू करने की अनुमति देनी चाहिए।
पुनर्प्राप्ति समय को शून्य पर सेट करने का प्रयास करें:
कमांड लाइन समकक्ष:
SC failure YOUR_SERVICE_NAME reset= 0 actions= restart/0/restart/0/restart/0
वैसे भी कभी-कभी ऑटो रिकवरी सही तरीके से काम नहीं करती है और इसने थर्ड पार्टी सॉफ्टवेयर का उपयोग करने की सिफारिश की है। ऐसा लगता है जब 0 खिड़कियों के एक्जिट कोड के साथ सर्विस एक्सेप्टेंस से बाहर निकलने की कोशिश नहीं की जाती है।
मैं HostForLife.eu पर अपनी विंडोज़ 2008 सर्वर पर ServiceKeeper का उपयोग कर रहा हूं और यह बहुत अच्छा काम करता है। पहले, मेरे पास ServiceHawk की समीक्षा थी, लेकिन मैं इसके आसान प्रबंधन और इंटरफ़ेस के लिए ServiceKeeper का उपयोग करना पसंद करता हूं।
रुकने पर मुझे सेवा शुरू करने की समान आवश्यकता थी। सबसे आसान उपाय मुझे लगा कि हर 5 मिनट में विंडोज़ टास्क शेड्यूलर में नीचे दिए गए कमांड को निष्पादित करना है:
शुद्ध शुरुआत MyServiceName
यह कमांड मूल रूप से सेवा शुरू करेगा (यदि रोका गया है) और इसका कोई प्रभाव नहीं है यदि सेवा पहले से ही चल रही है।
मैंने हाल ही में एक पॉवरशेल स्क्रिप्ट चलाने के लिए एक रिकवरी विकल्प लागू किया है जो सेवा को परिभाषित संख्या को फिर से शुरू करने का प्रयास करता है और निष्कर्ष पर एक ईमेल अधिसूचना भेजता है, यह भी।
कई प्रयासों के बाद (और अन्य सभी चीजों के बावजूद मैंने देखा है) सेवाओं में रिकवरी टैब पर क्षेत्रों का विन्यास इस प्रकार है:
प्रोग्राम: Powershell.exe
** Not C: \ Windows \ System32 \ WindowsPowerShell \ v1.0 \ Powershell.exe
कमांड लाइन पैरामीटर: -कमांड "और {SomePath \ YourScript.ps1 '$ args [0]' '$ args [1]' $ args [n] '}"
जैसे: -कमांड "और {C: \ PowershellScripts \ ServicesRecovery.ps1 'सेवा का नाम"} "
** $ args ऐसे पैरामीटर हैं जो आपकी स्क्रिप्ट में पास किए जाएंगे। इनकी आवश्यकता नहीं है।
यहाँ पॉवरशेल स्क्रिप्ट है:
cd $PSScriptRoot
$n = $args[0]
function CreateLogFile {
$events = Get-EventLog -LogName Application -Source SomeSource -Newest 40
if (!(Test-Path "c:\temp")) {
New-Item -Path "c:\temp" -Type directory}
if (!(Test-Path "c:\temp\ServicesLogs.txt")) {
New-Item -Path "c:\temp" -Type File -Name "ServicesLogs.txt"}
$events | Out-File -width 600 c:\temp\ServicesLogs.txt
}
function SendEmail {
$EmailServer = "SMTP Server"
$ToAddress = "Name@domain.com"
$FromAddress = "Name@domain.com"
CreateLogFile
$Retrycount = $Retrycount + 1
send-mailmessage -SmtpServer $EmailServer -Priority High -To $ToAddress -From $FromAddress -Subject "$n Service failure" `
-Body "The $n service on server $env:COMPUTERNAME has stopped and was unable to be restarted after $Retrycount attempts." -Attachments c:\temp\ServicesLogs.txt
Remove-Item "c:\temp\ServicesLogs.txt"
}
function SendEmailFail {
$EmailServer = "SMTP Server"
$ToAddress = "Name@domain.com"
$FromAddress = "Name@domain.com"
CreateLogFile
$Retrycount = $Retrycount + 1
send-mailmessage -SmtpServer $EmailServer -Priority High -To $ToAddress -From $FromAddress -Subject "$n Service Restarted" `
-Body "The $n service on server $env:COMPUTERNAME stopped and was successfully restarted after $Retrycount attempts. The relevant system logs are attached." -Attachments c:\temp\ServicesLogs.txt
Remove-Item "c:\temp\ServicesLogs.txt"
}
function StartService {
$Stoploop = $false
do {
if ($Retrycount -gt 3){
$Stoploop = $true
SendEmail
Break
}
$i = Get-WmiObject win32_service | ?{$_.Name -imatch $n} | select Name, State, StartMode
if ($i.State -ne "Running" -and $i.StartMode -ne "Disabled") {
sc.exe start $n
Start-Sleep -Seconds 35
$i = Get-WmiObject win32_service | ?{$_.Name -imatch $n} | select State
if ($i.state -eq "Running"){
$Stoploop = $true
SendEmailFail}
else {$Retrycount = $Retrycount + 1}
}
}
While ($Stoploop -eq $false)
}
[int]$Retrycount = "0"
StartService
यह एक समान धागे पर मेरा जवाब था आशा है कि यह मदद करता है ...
आप जरूरत पड़ने पर कंप्यूटर पर समय-समय पर सेवा को फिर से शुरू करने के लिए इस तरह से एक साधारण vbs स्क्रिप्ट को शेड्यूल कर सकते हैं।
strComputer = "।" strSvcName = "your_SERVICE_NAME" objWMI सेट करें = GetObject ("winmgmts: \\" और strComputer & "\ root \ cimv2") सेट objService = objWMI.Get ("Win32_Service.Name = '" और strSvcName & "" ") अगर objService.State = "स्टॉप्ड" तब objService.StartService () अगर अंत
सुपर उपयोगकर्ता पर किसी ने एक समान प्रश्न पूछा: आप एक उपकरण स्थापित कर सकते हैं जो विंडोज़ सेवाओं की निगरानी करता है। सेवा हॉक जैसी कोई चीज़ आपको सेवाओं को चालू रखने में मदद करेगी, या आपको सेवा को सुचारू रूप से चलाने के लिए स्वचालित रूप से (संभवतः रात के दौरान) शेड्यूल करने की अनुमति देगी।