2012-05-29 16 views
5

Tamamen durdurmaya gerek kalmadan upstart tarafından başlatılan bir servise yeniden yükleme komutunu nasıl gönderebilirim? bir olay uzun ömürlü olan Yükseltme hizmetine yeniden yükle komutu gönderin

  • cinleri işlemek ve başka bir şey tipik
  • Daemons bir hizmet sunmak için bir kez çalıştırmak

    • programlar:

    +0

    "upstart" ile başlatılan hizmetler ya bir Olayları işlemek için çalışan zaman programları veya uzun süredir devam eden daemonlardır. Genellikle bu tür programlar için stdin/stdout/stderr mevcut değildir - problemleri rapor etmeleri gerektiğinde ve belirli dosyalardan gelen girdileri okuduklarında dosyaları günlüğe yazarlar. Neden bu normal paradigmanın etrafında çalışmayı denediğimi merak ediyorum - ne çözmeye çalışıyorsun? – sarnold

    +0

    Bir node.js komut dosyasını, sürekli olarak çalışması gereken, upstart ile bir daemon olarak çalıştırıyorum. Bu betiğin bazen bir yeniden yükleme komutu alması gerekiyor. Ne yazık ki upsatrt, "servercontrol yeniden yükle" gibi sözdizimini desteklemiyor. Bu yüzden stdin'i kullanmayı düşündüm, çünkü 'servercontrol stop & servercontrol' komut dosyasını durduramam. – buschtoens

    +0

    'reload service' işleminize bir“ SIGHUP ”sinyali gönderecektir; “SIGHUP” sinyali genellikle, yapılandırma dosyaları için yeniden okuma isteğinde bulunmak için ... ... sunucuların kullandığı ... ... bu sizin için çalışacak mı? Yöneticilerin görevinizi diğer tüm işlere benzer şekilde yönetmesi kolay olurdu. – sarnold

    cevap

    9

    upstart tipik süreçlerin iki tür yönetir SIGHUP sinyali için bir sinyal işleyici sağlarken, daemonun yapılandırma dosyalarını yeniden okuyup yeniden ayrıştırmasını isteyin. (SIGHUP, telefon hatları veya SSH protokolleri bağlı veya bağlantısız olarak gelebilecek terminaller için daha uygun bir sinyaldir. Terminalleri olmayan programlar için terminallerini "asmak" mantıklı değildir. sinyal gönderilecek olmaz bu yüzden, sistem yöneticisi eylemiyle hariç daemona.)

    bunu bir SIGHUP sinyali aldığında yapılandırmasını yeniden okumak için programı değiştirebilir, o zaman standart upstartreload service komutunu kullanabilirsiniz yapılandırma dosyalarını yeniden yüklemek için (Bu sinyalde numaralı bir işlemi yapabilirsiniz, ancak sistem yöneticileri, bu sinyal üzerindeki yapılandırma dosyalarını yeniden okumaya yönelik sistem yöneticilerinin beklemelerini bekler - başka bir şey yapmak kafa karıştırıcı ve can sıkıcı olabilir.)

    +4

    Ayrıca "yeniden yükle" komutu için farklı bir sinyal yayan bir yükseltme komut dosyasını da yapılandırabilirsiniz. Senaryonun içinde sadece 'USR2' sinyalini tekrar yükle 'ya da uygulamanızın ne ifade ettiği her şeyi açıkla. –

    İlgili konular