Özel uptart iş adları sekmesi neden hizmet komutunda tamamlanmıyor?


16

Ben bir dosya ile upstart hizmetler oluşturmak için alışkınım /etc/init/<service>.confve gayet iyi çalışıyor, istediğim tek şey sekme tamamlama /etc/init.d/ her hizmet şu anda olduğu gibi olmasıdır.

Sudo service xx yazarken, servisin adı görünmelidir.

Otomatik tamamlama listesine uptart hizmeti eklemenin bir yolu var mı?


Merhaba, daha önce denedin mi?
— rɑːdʒɑ

Yanıtlar:


25

Uptart kullanarak standart bir daemon sağlayan her paketin /etc/init.dDebian politikası tarafından bir sembolik bağlantı sağlaması gerekir . Yani otomatik tamamlamasudo service nameZaten çalışır . Sorun yaşıyorsanız, bash-completionpaketin kurulu olduğundan emin olun .

Kendi uptart işlerinizi oluşturuyorsanız, symlink /etc/init.d/your_job için /lib/init/upstart-jobdiğer sonradan görme işler zaten yapıyoruz gibi. Bu, kendi işlerinizin aynı şekilde çalışmasını sağlayacaktır.

İçinde /etc/initkarşılık gelen bir girişi olmayan özel uptart işleri vardır/etc/init.d . Bunlar bir istisnadır. Debian Politikasından:

Bu kuralın bir istisnası, init uygulamasının kendisi tarafından sağlanan komut dosyaları veya işlerdir; bu tür işler /etc/rcS.d/ komut dosyalarının uygulamaya özel eşdeğeri için gerekli olabilir ve init komut dosyalarıyla birebir yazışmaları olmayabilir.

Bu istisnalar şu anda çalışmaz bash-completion. Ancak, kullanabileceğiniz start, stop, restartve reloaddoğrudan olmadan serviceve otomatik tamamlama çalışacaktır. Örneğin, sudo start shutdoğru otomatik olarak tamamlanır. Ancak normal olarak, karşılık gelen bir init.dgirişi olmayan uptart işlerini doğrudan çağırmanız gerekmez .

Not: Bunu Saucy'de test ettim. Destek eski bir sürümde görünmüyorsa, belki orada mevcut değildir (ancak yeterince yeni bir sürüme geçtiğinizde yakında alacaksınız).


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.