SORU
27 Mart 2009, Cuma


Hangi sırayla düzgün biçimde kapatma işlemleri için sinyalleri göndermek gerekir mi?

Başka bir this answer comment question, yorumcu diyor ki:

-9 sürece kesinlikle öldürmek kullanmayın gerekli! SİGKİLL çok tuzak olabilir. öldürülen herhangi bir program çalıştıramazsınız kapatma silme gibi rutin geçici dosyaları. Deneyin HUP (1) İlk, sonra (2), İSTİFA (3) İNT

SIGKILL, ama gerisi benim için yeni bir haber hakkında prensip olarak kabul ediyorum. Varsayılan sinyal kill tarafından gönderilen beklerdim SIGTERM, belirli bir rasgele sürecin zarif kapatma için en yaygın olarak beklenen sinyal. Ayrıca, SIGHUP non-sonlandırma nedenleri, daemon "re-read config file." demesi gibi gördüm Ve SIGINT (genellikle Ctrl-C değil mi? devam edersin aynı kesme) gibi geliyor bana olması gerektiği gibi yaygın olarak desteklenen gibi değil, daha doğrusu ungracefully sona erer.

SIGKILL verilen son resort& -;Sinyaller ve hangi sıraylakapa için rasgele bir süreç göndermek gerekir , aşağı mümkün olduğunca incelikle

Eğer yapabilirsen lütfen gerçekleri (kişisel bir tercih ya da görüş ötesi) veya Kaynaklar destekleyen cevaplar kanıtlamak,.

Not: bash/özellik listesi göz önünde bulundurularak içeren en iyi uygulamalar özellikle ilgi duyuyorum.

Düzenleme:Şimdiye kadar, kimse İNT söz ya da İSTİFA gibi görünüyor, ve HUP sınırlı söz var. Herhangi bir nedenle düzenli bir süreç-bu öldürme dahil etmek var mı?

CEVAP
27 Mart 2009, Cuma


SIGTERM bir uygulamayı sonlandırmak için söyler.Diğer sinyaller uygulama kapatma ilgisiz ama bazen aynı sonucu olabilecek diğer şeyler söyle. Bu kullanmayın. Eğer bir uygulamayı kapatmak isterseniz, bunu söyle. Bu yanıltıcı sinyal vermez.

Bazı insanlar bir işlemi sonlandırmak akıllı standart yolu HUP, İNT, TERİM gibi bir takım sinyaller göndererek, ve sonunda ÖLDÜRMEK olduğuna inanıyorum. Bu çok saçma. Fesih için sağ sinyal SIGTERM ve eğer SIGTERM süreci sonlandırmak anında değilse bile tercih edebileceğiniz gibi, uygulama sinyal işlemek için seçti çünkü. Çok iyi hemen sona erdirmek için bir sebep var demektir: Bu temizleme işi yapmak için var. Eğer sizi rahatsız eden temizleme çalışmaları ile diğer sinyaller, ne veri bellekten değil mi henüz kaydedilmiş disk, ne istemci uygulamalar sola dönüyor ya da engel oluyorsun "Ara cümle" etkili bir veri bozulması.

Sinyallerin gerçek anlamı hakkında daha fazla bilgi için, süreç(2). Karıştırmayın "Varsayılan Eylem""", bunlar aynı şeyler değiller. Açıklama

SIGINT"," sürecin. klavye etkileşimli bir kesme sinyali için kullanılır Bazı programlar terminal kullanıcıları amacıyla özel bir şekilde durumu idare edebilir.

SİGHUP terminali kayboldu sinyal için kullanılır ve artık süreci bakıyor. Hepsi bu. Bazı işlemler genellikle operasyonlarını terminal olmadan hiç mantıklı değil çünkü yanıt olarak kapatabilir, tercih, bazı yeniden yapılandırma dosyaları gibi başka şeyler yapmak için seçin.

SİGKİLL zorla çekirdekten işlemi kaldırmak için kullanılır. Aslında bu süreç için bir sinyal değil, daha ziyade çekirdek tarafından doğrudan yorumlanma biçimini bu anlamda özel.

SİGKİLL göndermeyin.SİGKİLL kesinlikle komut ile gönderilmelidir. Eğer uygulama SIGTERM işleme, ikinci bir temizleme, bir dakikanızı alır, onu alabilirbir saat sürebilir. Uygulamayı önce yapılması gerekenleri bağlı olarak, bitirmek için hazır. Herhangi bir mantık "varsayar" bir uygulamanın temizleme sırası yeterince uzun sürdü ve X saniye sonra kısayol ya da SİGKİLLed olması gerekirbunu aklından çıkarma.

Bir uygulama neden tek nedenigereksonlandırmak için bir SİGKİLL, eğer bir şey dışarı temizleme sırası boyunca dinleniyor. Bu durumda bir terminal açın ve el ile SİGKİLL. Bunun dışında, bir şey SİGKİLL neden tek bir nedeni olmasıdırİSTİYORUMkendisi temizlik önlemek için.

Yarım dünya kullanır korkunç yanlış değil bundan sonra 5 saniye SİGKİLL için değil.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Derek Banas

    Derek Banas

    12 AĞUSTOS 2008
  • finalcall07

    finalcall07

    11 NİSAN 2008
  • manadude21

    manadude21

    11 Mart 2008