Temel upstart betiğini systemd'ye taşıma


17

Bir sunucuyu Ubuntu 14.10'dan 15.04'e yükselttim ve özel başlatma komut dosyaları aracılığıyla başlattığım birkaç hizmet artık çalışmıyor.

Anladığım kadarıyla, bunları systemdhizmet olarak yeniden yazmam gerekiyor , ancak tüm systemdsistemi bir gecede öğrenme düşüncesi biraz göz korkutucu.

Uptart betiği autosshbaşlangıçta başlatılır ve uzun süren işlemleri başlatan benzer birkaç betiğim vardır.

#/etc/init/autossh.conf

description "Maintain a permanent SSH tunnel to <other_server>"

start on started mountall
stop on shutdown

exec autossh -N other_server

Bunu bir systemdhizmet olarak nasıl yeniden yazabilirim ?


3
Upstart kullanıcıları için Systemd iyi bir başlangıç ​​noktasıdır.
muru

Yanıtlar:


13

systemd'e geçiş için ilk kural

Bu noktada, 2015 yılında, büyük olasılıkla birisinin zaten yapmış olması muhtemeldir.

systemd birkaç yıldır var. Ve birim dosyaları yazıp yayınlayan bir yazlık endüstrisi var. Özellikle GitHub, hizmet birimleri koleksiyonlarının depolarını çekiyor gibi görünüyor.

Gerçekten de WWW'yi autossh.service(bir cümle olarak) aramak sadece ortaya çıkıyor:

bir şablon birimi

Bununla birlikte, yalnızca StackExchange üzerinde çeşitli yerlerde işaret ettiğim gibi, bu tür bir geçiş mekanistik bir süreç değildir ve bazen bir kişinin bir birim dosyasına ne olursa olsun robotik olarak çevirmek işleri yanlış veya en azından kötü yapıyor. Bu durumda, hedef adıyla parametreleştirilen, gerçek hizmet birimlerine somutlaştırıldığı autosshbir şablon birimi ile işlenecek olumlu bir şekilde nefes nefese kalır . Gibi /etc/systemd/system/autossh@.service, var:

[Birim]
Açıklama =% i üzerinden ters tünel için AutoSSH hizmeti 
= Network.target sonra

[Hizmet]
Kullanıcı = autossh
EnvironmentFile = / etc /% p /% i.conf
ExecStart = / usr / bin / autossh -M 0 -q -N $ SSH_USER @% i $ SSH_OPTIONS

[Yüklemek]
WantedBy = multi-user.target

Adında bir dosya oluşturun /etc/autossh/other_server.example.conf:

SSH_USER = Joe

Normal kontrollerin tümü geçerli olur:

  • systemctl enable autossh@other_server.example - Bir örneğin bootstrap'ta otomatik olarak başlatılmasını sağlar.
  • systemctl start autossh@other_server.example - Bu örneği derhal manuel olarak başlatın.
  • systemctl status autossh@other_server.example - Durumunu görün.

Ve evet, ilk kural bunun için bile geçerlidir. Arama, OpenSUSE'de Greg Freemyer tarafından bir iki hafta içinde bununla dövüldüğümü bulabiliriz.


Teşekkür ederim - Buna benzer bir şey buldum, ancak 'şablon birimleri' fikrinin farkında
değildim

@JdeBP Burada da benzer bir sorum var . Bana yardım edip edemeyeceğini görmek istedim.
user1950349
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.