Özel bir başlangıç ​​hizmeti yüklemenin doğru yolu


51

Sunucularımdaki hizmetler için upstart kullanıyorum. Bir conf dosyası yazmak ve onu yerleştirmek /etc/inityeterince kolaydır, ancak bu tamamen yüklenmemiş gibi görünmektedir. Birincisi, service --status-allyeni hizmetimi listelemiyor. Kontrol ettim ve ben bir bağlantıyı yaparsanız /etc/init.diçin /lib/init/ubstart-jobo statüsünde görünürsünüz. Ancak bunu manuel olarak yapmak, doğru yapmadığımı düşünmemi sağlıyor ve yapılmayan başka yapılandırma adımları olabilir.

Bir başlangıç ​​servisini, servislerle ilgili tüm araçlara uygun şekilde kaydedilecek şekilde kurmanın doğru yolu nedir?


2
Bu adam benim başlatma hizmetini kullanarak sorularımdan birini cevapladı ve ayrıntılı bir açıklama yaptı, kaçırılmış olabilecek bir adımı gösterebilirdi askubuntu.com/a/278128/75967
Meer Borg

1
Bunu mu demek istediniz /lib/init/upstart-job?
Dalore

Yanıtlar:


46

Yeni bir conf dosyasını ilk olarak / etc / init klasörüne kopyaladığınızda, aramanız gereken:

initctl reload-configuration

Bu sayede sizin başlangıçınız doğru bir şekilde kaydedilmelidir.


8
Yani bu, işi (yani startve stopişi) doğru bir şekilde başlatır, ancak işi tümüyle göstermez. Bunun gerçekleşmesi için hala el ile eklemek zorunda kaldım /etc/init.d/.
James McMahon

1
@JamesMcMahon initctl listKomutu sudo: ile çalıştırmanız gerekir sudo initctl list. Bu şekilde servislerin tam listesini göreceksiniz.
Shahriyar Imanov

Neden sudo, initctl listesinin çıktısını hiç değiştirmiyor gibi görünüyor.
LovesTha

@JamesMcMahon I still had to manually add it to /etc/init.d,. Hala ne eklemek zorundaydın? Bu bir ek olarak, yani X.confeklenen dosyanın /etc/init, bu dosya eklemek de gerekir /etc/init.d?
Kevin Meredith,

@KevinMeredith, Üzgünüm daha ayrıntılı değildim. 2 yıl oldu ve özelliklerini hatırlayamıyorum. Bazı init.d belgelerine bakarsanız, bunun açık bir şekilde anlaşılması gerekir.
James McMahon

18

Servis el kitabına göz atın:

service --status-all tüm komut dosyalarını alfabetik sırayla status komutuyla çalıştırır. Bu seçenek yalnızca sysvinit işleri için durum çağırır, başlangıç ​​işleri initctl listesiyle benzer şekilde sorgulanabilir.

(vurgu eklendi)

Bu yüzden /etc/init.d dosyasına (sysvinit işlerinin bulunduğu yer) eklemek bu çalışmayı yaptı. Yani: bunun yerine initctl listesini çalıştırmayı deneyin :).


That's why adding it Neyi ekliyor? my_service.confDosyaya ek olarak, bir dosya /etc/initolması da gerekir /etc/init.d?
Kevin Meredith,

Ubuntu ile çalışmıyor 16.04.4 LTS \\ $ initctl list initctl: "com.ubuntu.Upstart" adı bulunmuyor Bağlantı reddedildi
nine9five

13

SysV Servisleri İçin

Ubuntu'da yeni servis eklerken / oluştururken aşağıdaki adımları izlediğinizden emin olun.

  1. Servis dosyasını şurada oluşturun: /etc/init.d/<service name>
  2. chmod 700 /etc/init.d/<service name>
  3. update-rc.d <service name> defaults
  4. update-rc.d <service name> enable

Şimdi görüşürüz

service --status-all

15
Cevabınız sysv ile ilgilidir ve başlangıç ​​değil. silmek isteyebilirsiniz.
jcomeau_ictx

3
Gerçekten yararlı bir cevap.
ATorras

başka bir serivice ile ilgili olsa da, gerçekten yararlıdır
wuppi

1

.Conf dosyasındaki bir hatanın işi initctl ile tanınabilir hale getiremeyeceğini öğrendim. örneğin, setuidUpstart 1.3 veya daha önceki bir sürümde bir çizgiye sahip olmak .


1

Seçilen mevcut cevap, yeni hizmetin başlatılmasına eklenmesi için doğru olsa da, / etc / init / içinde bir config NEDEN yüklenemediğini bulmak için özellikle yararlı değildir - eksik parça önce emin olmak için önce init-checkconf kullanıyor senin config geçerli ve sonra yeniden yapılandırma yapılandırmasını kullanarak:

####Test the new config - resolving any issues before continuing:
ERROR: File /etc/init/test.conf: syntax invalid:
test.conf:35: Unterminated quoted string

####then fix and recheck:
# init-checkconf /etc/init/test.conf
File /etc/init/test.conf: syntax ok

####then reload:
# initctl reload-configuration

#### and start:
# start test
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.