Systemd'de 'bağlantılı' birim dosyalarını etkinleştirme


10

Hala systemd ile uğraşıyorum ve bir şeyle karşılaştım. Çok fazla sorun değil, ama bunun nasıl olduğu hakkında daha fazla bilgi edinmek istiyorum. Başka bir yerde buna referans bulamadım.

Öncelikle, hizmetler için özel birim dosyalarının girilmesi gerektiğini anlıyorum /etc/systemd/system. Ancak, birim dosyaları başka bir yerde bulunabilirse, sunucularımızın yönetimi için iyi olurdu.

Dokümantasyonda, ünite dosyalarını şöyle bağlayabileceğinizi gördüm:

systemctl link /path/to/servicename.service

Bu, yukarıdakilere bir bağlantı oluşturur /etc/systemd/system. Artık bu hizmeti başlatabilir / durdurabilirsiniz. Yüzeyde bu, hizmetlerimizi yönetmemiz için iyi bir yol gibi görünüyordu.

Ancak, böyle bir 'bağlantılı' birim dosyasını etkinleştirmeye çalışmak hataya neden olur:

root@test1:/etc/systemd/system# systemctl link /root/myservice.service 
Created symlink from /etc/systemd/system/myservice.service to /root/myservice.service.

root@test1:/etc/systemd/system# systemctl status myservice.service 
 * myservice.service - My Test Service
     Loaded: loaded (/root/myservice.service; linked; vendor preset: enabled)

root@test1:/etc/systemd/system# systemctl enable myservice.service
Failed to execute operation: No such file or directory

Aynı birim dosyasını kullanarak, ancak /etc/systemd/systembağlantı yerine yerine kopyalandı :

root@test1:/etc/systemd/system# cp -p /root/myservice.service .

root@test1:/etc/systemd/system# systemctl daemon-reload 

root@test1:/etc/systemd/system# systemctl status myservice.service 
 * myservice.service - My Test Service
     Loaded: loaded (/etc/systemd/system/myservice.service; disabled; vendor preset: enabled)

root@test1:/etc/systemd/system# systemctl enable myservice.service
Created symlink from /etc/systemd/system/multi-user.target.wants/myservice.service to /etc/systemd/system/myservice.service.

Bundan, ünite dosyalarındaki bağlantılı sistemin sistem başlangıcında çağrılmasının mümkün olmadığı görülmektedir.

Bu durumda, 'link' işlevselliğinin anlamı nedir? Dokümanlardan şöyle diyor:

bağlantı FILENAME

Birim dosyası arama yollarında olmayan bir birim dosyasını birim dosyası arama yoluna bağlayın. Bu, bir birim dosyasına mutlak bir yol gerektirir. Bunun etkisi devre dışı bırakılarak geri alınabilir. Bu komutun etkisi, doğrudan birim arama yoluna yüklenmemiş olmasına rağmen, bir birim dosyasının başlatma ve diğer komutlar için kullanılabilir olmasıdır.

Yanıtlar:


15

Man sayfası yanıltıcı.

systemctl link /root/myservice.service

systemctl enable /root/myservice.service

Birincisi bunu yapmanızı mümkün kılar systemctl start myservice. İkincisi, myserviceotomatik olarak başlatılmasını mümkün kılar (@Julien'in işaret ettiği gibi, otomatik olarak ekler link).

Sanýrým ... Bütün gün kafamý dolaţtýrmaya çalýţýyorum.


1
systemctl enablebunu da yapacağını unutmayın systemctl link, bu yüzden 2 komutu yazmanıza gerek yok ;-)
Julien

@Julien Oh, geçen yıl bu yazıyı yazarken neredeyiz :-) Sanırım sonunda geçen ay farkettim!
Auspex

Bence çok az insan bunu biliyor. Çok teşekkür ederim!
Kyle

10

Bir hizmeti varsayılan yollardan başka bir yoldan etkinleştirirken tam yolu kullanmanız gerekir. Etkinleştir ayrıca sizin için bağlantı oluşturur:

systemctl enable /root/myservice.service

Etkinleştirildikten sonra servis adıyla başlatabilir / durdurabilirsiniz / durum

systemctl start myservice

Burada birkaç uyarı:

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.