Sistemd servisi olarak sembolik bir bağlantı kullanabilir miyim?


14

Örneğin, dizin mysshd.servicealtında adlandırılmış bir hizmetim var /usr/lib/systemd/system/. Aşağıdaki gibi sembolik bir bağlantı oluşturabilir miyim:

ln -s /usr/lib/systemd/system/mysshd.service /usr/lib/systemd/system/fool.service

böylece fool.service ile ne yaparsam yapayım mysshd.service( systemctl enable/disable start/stop fool.servce)?

Amacım, kendi sshd hizmetimin sembolik bir bağlantısı ile yerel sshd hizmetinin üzerine yazmak.


1
Neden hizmetinizi eklemiyor ve etkinleştirmiyor ve yerel sshd hizmetini devre dışı bırakmıyorsunuz?
Lambert

Yazılımımın /etc/init.d/ssh -> /etc/init.d/myssh sembolik bağlantısı kullanılan önceki sürümle uyumlu olmasını istiyorum.
nick

Hala ne demek istediğini tam olarak anlamadım ama satırına göre <quote> fool.service ile yaptığım herhangi bir işlem mysshd.service'e (systemctl enable / devre dışı bırak / durdur fool.servce) ne şekilde yansır? > sshd'den sonra hizmetinizi başlatmak / etkinleştirmek için systemd bağımlılıklarına bakabilirsiniz (bkz. wiki.archlinux.org/index.php/systemd#Handling_dependencies ).
Lambert

@ yığın Stack Exchange'e hoş geldiniz! Stack Exchange'de cevaplar için kudosları yükselterek göstermek gelenekseldir. cevabın sol tarafındaki yukarı oku tıklayarak bunu yapabilirsiniz. Cevabım sorununuzu çözdüyse, onay kutusunu tıklayarak kabul edildi olarak işaretleyebilirsiniz. Teşekkürler!
strugee

Yanıtlar:


9

Bildiğim kadarıyla, systemd bununla özellikle iyi ilgilenmeyecek. Anladığım kadarıyla, davranışını geçersiz kılmak istiyorsunuz sshd.service, değil mi?

Neyse ki sizin için, systemd bu tür şeyler için tasarlanmıştır. Sadece servis tanımınızı girin /etc/systemd/system/ssh.service, systemctl daemon-reloadbirim dosyalarını yeniden yüklemek için çalıştırın ve systemd sistem yerine otomatik olarak bu yapılandırmayı kullanacaktır ssh.service.

Siz de systemctl enable mysshd.serviceçalışmak ister misiniz ? Sorun değil. In [Install]your birim dosyasının bölümüne diyen bir satır ekleyin Alias=mysshd.service. Sonra systemctl reenable ssh.servicesistemd birim sembollerini düzeltmek için çalıştırın ve altın.

Şimdi, ne mysshd.serviceyapılması gerektiği hakkında ayrıntılı bilgi vermediniz. Normalden tamamen farklıysa ssh.serviceharika! Yukarıdaki yöntemi kullanın. Ancak, sadece küçük bir şeyi değiştirmek istiyorsanız, yanlış yaklaşımı kullanıyorsunuz. systemd, normal birim dosyalarının üstüne uygulanacak birim dosyalarının "snippet'lerini" oluşturmanıza olanak tanır. Bu, birim dosyasının geri kalanının paket yöneticisinden güncellemeler almasına izin verirken ayrı ayrı yönergeler eklemenizi veya geçersiz kılmanızı sağlar. Bunu yapmak için basitçe oluşturun /etc/systemd/system/ssh.d/my-custom-config.conf(istediğiniz gibi olacak şekilde değiştirebilirsiniz my-custom-config.confve birden fazla geçersiz kılma dosyanız da olabilir). Bu dosyaya değiştirmek veya her zamanki gibi eklemek istediğiniz yönergeleri yerleştirin ssh.service. Hatta Alias=yönergeler ekleyebilirsiniz , böylece işe systemctl start mysshd.serviceyarıyor! Sadece çalıştırmayı unutmasystemctl daemon-reload(eğer kullanılırsa ve sonra bitirdiniz Alias=, systemctl reenable ssh.service).

Bir üzere kenara, asla, hiç de systemd birim dosyalarını değiştirmek /usr/lib/systemd. Hiç! Dosya Sistemi Hiyerarşi Standardı , bunun /usrsalt okunur olarak değerlendirilmesini gerektirir . Uygulamada bu, paket yöneticisinin /usr(hariç /usr/local) işlediği ve paket yöneticisinin işlediği şeye dokunmamanız anlamına gelir - özellikle de değiştirdiğiniz her şeyin üzerine yazılacağı için. Bunun yerine, eşyalarınızı benzer bir yere koyun /etc.


1
Biraz açıklığa kavuşturmak için: geçersiz kılmak istiyorsanız foo.service, çalıştırın sudo systemctl edit foo.serviceve yazdığınız her şeyi kaydeder /etc/systemd/system/foo.service.d/override.conf.
Rockallite

Ayrıca, Alias=yönerge geçersiz kılma dosyalarında ÇALIŞMAZ. Bkz. Github.com/systemd/systemd/issues/1090
Rockallite

@Rockallite systemctl editbu cevabı yazdığım sırada bilmiyordu . Alias=hatayı yansıtmak için cevabımı düzenlemekte özgürsünüz (düzenleme mesajında ​​"OK ile cevaplayıcı" veya başka bir şey koyunuz). İyi yakalama.
17'de strugee

5

linkTam yolla kullanın :

systemctl link /home/nick/myservice.service

Zaten bir bağlantı olan bir hizmet dosyasını bağlayamayacağınızı unutmayın.


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.