Uptart ile bir daemon kapatma komutu nasıl belirlenir?


9

Uptart yapılandırmasında, sunucuyu kapatmak için hangi komutun kullanılması gerektiğini nasıl tanımlarım. Diyelim ki iki ayrı işlemi olan daemon'um var.

  • startup.sh - sunucuyu başlatmak için
  • shutdown.sh - sunucuyu kapatmak için

Diyelim ki böyle bir uptart dosyası var.

description "Some Example Service"
author "Me"

start on runlevel [2345]
stop on runlevel [016]
respawn

exec startup.sh 

Uptart'a shutdown.shsunucuyu kapatırken araması gerektiğini nasıl anlarım ? Uptart normalde bir arka plan programını nasıl kapatmayı bekler?

Yanıtlar:


10

execİşlemi başlatmak için kullanmak iyidir, ancak durdururken, belirli bir komut dosyasını veya komut kümesini çalıştırmanız gerekiyorsa, pre-stopstanza'yı kullanabilirsiniz .

pre-stop exec shutdown.sh

Sanırım sadece bir exec stanza kullanmayı denediniz ve işe yaramadı, muhtemelen daemon'unuz bazı özel temizlik gerektiriyor. İyi davranan cinlerin iş durdurulduğunda yukarıdan bir sinyal alması gerektiğini ve sinyali uygun şekilde ele alırlarsa ek temizleme gerekmediğini unutmayın.

Bir işi durdurmak, SIGTERM'in ona gönderilmesini içerir. SIGTERM'den önce yapılması gereken bir şey varsa, burada yapın. Muhtemelen, hizmetler SIGTERM'i çok zarif bir şekilde ele almalıdır, bu yüzden bu gerekli olmamalıdır.

diske bir sifon gibi kritik bir şey varsa ve öldürme zaman aşımını artırmak bir seçenek değilse, durma işlemi bunu yapmak için kötü bir yer değildir

Ayrıca , bir işi durdurduğunuzda ne olacağının tüm iş akışı için bu bölümü okuyun . Ön durdurma çalıştırıldığında ve daha sonra işleme bir sinyalin nasıl gönderildiğine dikkat edin, bu da uptart'ın durdurma işlerini normal şekilde ele alır.

Kaynağım şu adresteki resmi Upstart yemek kitabı: http://upstart.ubuntu.com/cookbook/


1
Diyerek şöyle devam etti: "İyi davranmış cinlerin iş durdurulduğunda yukarıdan bir sinyal alması gerektiğini ve sinyali uygun şekilde ele alırlarsa ek temizleme gerekmediğini unutmayın." - Unix dünyasında, programcılar işinin yanında işleri kontrol altına almak için komut dosyaları kullandığımızı unutmayın. Ve bu çok saçma bir açıklama, çünkü örneğin bir e-posta göndermek, diskin kilidini kaldırmak vb. Dahil olmak için bir yere ihtiyacımız var ve bu görevlerin kendisinin bir parçası olması gerekmez. Bu nedenle upstart, sunucu ortamında kullanılmaya hazır değildir.
kakaz

Bu cevaptan (Tek!) İhtiyacımız olan şeyi yapmanın iyi bir yolu olmadığını görüyorum?
kakaz
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.