Hizmet Başarısız Olduğunda Gerçekleşecek Kurtarma Eylemlerini Ayarlama


10

Özel yazılı hizmetlerimizin çoğunu pencere kutularına yükledim (XP, Server, Vista olursa olsun önemli değil). Her zaman 1., 2. ve sonraki arızalarda "Hizmeti Yeniden Başlat" olarak yapılandırırım. Ama bu işi hiç görmedim; hizmet basitçe durur (koddaki bir hata veya bir şey nedeniyle) ancak yeniden başlatılmaz.

"Hatalarla Durdurmak İçin Eylemleri Etkinleştir" onay kutusunu gördüm. Arıza bir hatadan kaynaklanıyorsa kurtarma işleminin etkili olması için bunun kontrol edilmesi gerekiyor mu?

teşekkürler, Mark.

Yanıtlar:


3

Hizmetleriniz bir hata nedeniyle duruyorsa, bu pencereler tarafından günlüğe kaydedilir, ardından evet, 'Hatalarla Durdurmak İçin Eylemleri Etkinleştir' seçeneğini işaretlemeniz gerekir, aksi takdirde çalışmaz.

Bunu işaretlemediyseniz, yalnızca meşru veya bilinmeyen nedenlerle durmuş hizmetleri yeniden başlatır.


1
Teşekkürler - Bunu düşündüm. Ama "Hata" nın "başarısızlık" ile aynı şey olacağını düşünürdüm ve bu nedenle servis kutuyu işaretlemeden başlamalıydı.
M Schenkel

Kabul ediyorum biraz garip görünüyor, bir hizmet başarısız olmasının nedenlerinin çoğu bir hata olacağını düşünürdüm.
Sam Cogan

2
"Meşru" nedenlerden ötürü durmuş hizmetlerde hiçbir kurtarma işlemi başlatılmayacaktır. Bu cevap hala "dur" ve "başarısızlık" terimleri konusunda kafa karışıklığı yaratıyor.
matpop

3
Microsoft'ta bu dili fetheden kimseler, yetersizlikleri için sonsuz bir şekilde kırılmalıdır.
Brain2000

16

Windows Vista ve Windows Server 2008 ile "Hatalı duraklamalar için eylemleri etkinleştir" onay kutusu tanıtıldı ve tek, utanç verici bir belge satırı sağladı :

Hizmetin bir hatayla durdurduğu kurtarma eylemlerini tetiklemek için Hatalı duraklamalar için eylemleri etkinleştir'i seçin .

SC.exe Programda ayrıca yeni komut vermek üzere güncellendi: failureflag. Dokümantasyon kötü örnek gösterir ve gerçekten, Windows Server 2003 için geçerli değildir, ama komuta söyler:

Hizmetin bir hata sonucu durduğunda kurtarma eylemlerinin tetiklenip tetiklenmeyeceğini belirtir.

Yani, onay kutusu ve sc failureflagaynı bayrağı ayarlamak için kullanılır.
Hadi tip sc failureflagkomut isteminde, nihayet bir oldukça iyi bir açıklama almak:

Bir hizmetin hata eylemleri bayrak ayarını değiştirir. Bu ayar 0 (varsayılan) ise, Hizmet Denetim Yöneticisi (SCM) hizmette yapılandırılmış hata eylemlerini yalnızca hizmet işlemi hizmetle SERVICE_STOPPED dışında bir durumda sonlandırılırsa etkinleştirir. Bu ayar 1 ise, hizmet yukarıdaki işlem işlemi sonlandırmasına ek olarak 0'dan farklı bir Win32 çıkış koduyla hizmet SERVICE_STOPPED durumuna girerse SCM hizmette yapılandırılmış hata eylemlerini etkinleştirir. Hizmetin yapılandırılmış hiçbir hata eylemi yoksa bu ayar yoksayılır.

Benzer bir açıklama burada bulunabilir .
Bu nedenle, asıl soruya doğru cevap şudur: yapılandırılan kurtarma eylemleri, hizmetiniz SERVICE_STOPPED durumunda sona ermediğinde her zaman etkili olur. Çıkış kodunun 0 (hata) olmaması koşuluyla hizmetiniz SERVICE_STOPPED durumuna girdiğinde de kurtarma eylemlerini etkinleştirmeniz gerekiyorsa, "Hatalı duraklar için eylemleri etkinleştir" seçeneği işaretlenmelidir .


2
Çok yararlı bir cevap için Kudos!
Tim Lovell-Smith
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.