Temel sistem ve servis dosyalarının yazılması


103

Kullanıcının localhost'ta HTTP üzerinden etkileşim kurduğu bir Nodejs uygulaması geliştiriyorum. Neredeyse hiçbir parametre yoktur ve arka plan programında neredeyse hiçbir bağımlılık yoktur ve sadece oturum açma zamanının açılması gerekir.

Her bir platformdaki aptalları başlangıç ​​betiği için takip etmek istiyorum ve bu Ubuntu'da Upstart ve Fedora'da systemd anlamına geliyor.

  • Systemd sistem dosyalarını yazmak için iyi bir ders var mı?
  • Dikkat edilmesi gereken en iyi uygulamalar var mı?

Bu kaynakları buldum:

Çoğunlukla referans olarak bir API türünün yanı sıra izlenecek temel bir format arıyorum.


Systemd hakkında Arch Linux Wiki sayfası hizmeti dosyalarını yazma konusunda ilginç bir bölüm vardır.
Rudy Matela

> man systemd.service>> man systemd.unit
truezion

Yanıtlar:


29

Ben başlardım systemd manuel sayfalarında . Sistem ve hizmetlerin kapsamlı bir kaynağını temsil ederler.

Ayrıca freedesktop Systemd SSS'leri de var .


43
Kılavuz sayfaları yararlı olacaktır (keşke daha temiz olsa da), fakat temel bir sistem dosyası rehberi var mı? Hangi parçaların gerekli olduğu, hangi parçaların önerildiği ve hangi parçaların isteğe bağlı olduğu gibi. Adam sayfaları zaten olmadığım sistemd sistem dosyalarında uzman olduğumu varsayıyor gibi görünüyor.
beatgammit

Farkında olduğumdan değil, ne yazık ki. Muhtemelen initscripts yazıyorsanız, zaten initscripts nasıl yazacağınızı bildiğiniz bir varsayım vardır. Arch scriptlerine göz atın ve ihtiyacınız olana benzer bir tane seçin: archlinux.org/packages/community/i686/systemd
jasonwryan

1
Teşekkürler! Yardımın ve bulduğum blog sayesinde, temel bir çalışmayı elde edebildim. Systemd, başlamadan veya eski systemv init daemon'dan çok daha hoş görünüyor.
Beatgammit

49
Orada vakti olan, bununla BAŞLAYMAK için yaşıyor. Ne yaptığını biliyorsan, bu harika bir referans, ama kutsal ineğin elle yapabileceği sayfalar karmaşık.
Jonathan Komar,

1
@ macmadness86 OP yetkili bir kaynak arıyordu (son paragrafa bakınız); çoğu ihtiyaç için, benzer bir uygulama için servis dosyasını okumak ve ardından mansayfanın belirli bölümlerine bakmak sizi oraya götürmek için yeterli olacaktır. Aslında oldukça basitler.
jasonwryan

180

Aşağıdaki örnek, aslında tüm adımlardan bahsetmeyen ve yalnızca kaynağı göstermek için listelenen bu bağlantıdan ilham almıştır: http://patrakov.blogspot.com/2011/01/writing-systemd-service-files.html

Adım 1 : Aslında genişletilmiş bir argümanla bir bash işlemi başlatan bu dosyayı (not konumu) yarattım. Bash'tan farklı olabilecek kendi emrinizi ateşleyebilirsiniz.

[root@y500-fedora ~]# cat /etc/systemd/system/foo.service 
[Unit]
Description=foo

[Service]
ExecStart=/bin/bash -c "while true; do /bin/inotifywait -qq --event close_write /sys/class/backlight/acpi_video0/brightness; su myusername -c '/bin/xbacklight -display :0 -set $(cat /sys/class/backlight/acpi_video0/brightness)'; done"

[Install]
WantedBy=multi-user.target

2. Adım :

Yükle systemd:

systemctl daemon-reload

Yeni hizmeti başlat:

systemctl enable foo

(benzer şekilde yapabilirsiniz disable)

(isteğe bağlı) Adım 3 : Bir sonraki açılışta otomatik olarak çoklu kullanıcı moduna geçmelidir (çalışma seviyesi 3) ancak hemen başlatmak istiyorsanız:

systemctl start foo
systemctl status foo # optional, just to verify

Güncelleme: Bütünlüğü sağlamak için, ubuntu biyonikinin çok kapsamlı bir adam sayfasına sahip olduğunu eklemeliyim. Burada RTFM


57
Hızlı bir öğretici yayınladığınız ve yalnızca site dışı kılavuz sayfalarına bağlantı vermediğiniz için teşekkür ederiz!
Toby J

2
başvuru için systemctl bir cat komut kısayoluna sahiptir.
Andy Bettisworth

Cat komut kısayolu nedir? Tüm yolu girmeden sistemd kontrol dosyalarını yaratmanın ve düzenlemenin bir yolu gibi mi?
JpaytonWPD

Bu dosyanın ideal olarak sahip olması gereken izinler nelerdir?
16'da

2
Systemd.unit man sayfasına göre girmelisin /etc/systemd/system. / usr / lib / systemd, uygun dağıtım paketlerinin dosyalarını koydukları yerdir.
wbkang

4

2
Bu soruyu teorik olarak cevaplasa da , cevabın temel kısımlarını buraya eklemek ve referans için bağlantıyı sağlamak tercih edilir .
Stephen Rauch

1
@StephenRauch Düz bağlantıların pek hoş karşılanmadığını biliyorum ama bu çok büyük bir konu ve cevap olarak özetlemek kolay değil.
caracal

Bu bulduğum en okunaklı rehberdi. Bu iyi bir cevap. :-)
mods'inize iyi bakın

DigitalOcean ayrıca oldukça kapsamlı bir dizi öğretici ve ilgili belgelere sahiptir: digitalocean.com/community/tutorials/…
irbanana
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.