Zapisywanie podstawowych plików usługi systemowej


103

Zajmuję się tworzeniem aplikacji Nodejs, z którą użytkownik wchodzi w interakcje za pośrednictwem protokołu HTTP na hoście lokalnym. Praktycznie nie ma żadnych parametrów, a demon praktycznie nie ma żadnych zależności i po prostu musi być gotowy do zalogowania się.

Chciałbym śledzić idiomy na każdej platformie dla skryptów startowych, a to oznacza Upstart na Ubuntu i systemd na Fedorze.

  • Czy są jakieś dobre samouczki dotyczące zapisywania systemowych plików systemowych?
  • Czy są jakieś „najlepsze praktyki”, o których należy pamiętać?

Znalazłem te zasoby:

W większości szukam API jako odniesienia, a także podstawowego formatu do naśladowania.


Strona Arch Arch Wiki na temat systemd zawiera interesującą sekcję dotyczącą pisania plików serwisowych.
Rudy Matela

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

Odpowiedzi:


29

Zacznę od stron podręcznika Systemd . Stanowią kompleksowy zasób systemu i usług.

Dostępne są również często zadawane pytania dotyczące Systemd Freedesktop .


43
Strony podręcznika przydadzą się (choć chciałbym, żeby było czystsze), ale czy istnieje podstawowy samouczek pliku systemowego? Podobnie jak które części są konieczne, które części są zalecane, a które opcjonalne. Strony podręcznika wydają się zakładać, że jestem już ekspertem w zakresie systemowych plików systemowych, a ja nie.
beatgammit

Niestety nie jestem tego świadomy. Prawdopodobnie istnieje założenie, że jeśli piszesz skrypt skryptowy, już wiesz, jak pisać skrypt skryptowy. Przejrzyj skrypty Arch i wybierz taki, który jest potrzebny: archlinux.org/packages/community/i686/systemd
jasonwryan

1
Dzięki! Z twoją pomocą i blogiem, który znalazłem, udało mi się uruchomić podstawowy. Systemd wydaje się o wiele ładniejszy niż poprzedni demon systemst lub startstart.
beatgammit

49
Kto ma tam czas, zaczyna od tego. Chodzi mi o to, że jeśli wiesz, co robisz, to świetna informacja, ale święta krowa, strony podręcznika są złożone.
Jonathan Komar

1
@ macmadness86 OP szukał wiarygodnego źródła (patrz ostatni akapit); w przypadku większości potrzeb przeczytanie pliku usługi podobnej aplikacji, a następnie zapoznanie się z określonymi częściami manstrony będzie wystarczające, aby Cię tam dostać. W rzeczywistości są dość proste.
jasonwryan

180

Poniższy przykład jest zainspirowany tym linkiem, który w rzeczywistości nie wspomina o wszystkich krokach i jest wymieniony tylko po to, by podać źródło: http://patrakov.blogspot.com/2011/01/writing-systemd-service-files.html

Krok 1 : Utworzyłem ten plik (położenie notatki), który zasadniczo uruchamia proces bash z rozszerzonym argumentem. Możesz wystrzelić własne polecenie, które może różnić się od uderzenia.

[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

Krok 2 :

Załaduj ponownie systemd:

systemctl daemon-reload

Uruchom nową usługę:

systemctl enable foo

(podobnie możesz to disablezrobić)

(opcjonalnie) Krok 3 : Powinien rozpocząć się automatycznie przy następnym uruchomieniu w trybie wielu użytkowników (poziom uruchamiania 3), ale jeśli chcesz go uruchomić od razu:

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

Aktualizacja: Dla kompletności powinienem dodać, że ubuntu bionic wydaje się mieć bardzo dokładną stronę podręcznika. RTFM tutaj


57
Dziękujemy za opublikowanie krótkiego samouczka, a nie tylko odsyłanie do stron podręcznika użytkownika poza witryną!
Toby J

2
Systemctl ma skrót poleceń cat, do celów informacyjnych.
Andy Bettisworth,

Co to jest skrót poleceń kota? Jak sposób tworzenia i edytowania systemowych plików kontrolnych bez podawania całej ścieżki?
JpaytonWPD

jakie uprawnienia powinien mieć ten plik?
knocte

2
Według strony podręcznika systemd.unit powinieneś go umieścić /etc/systemd/system. / usr / lib / systemd to miejsce, w którym odpowiednie pakiety dystrybucyjne umieszczają swoje pliki.
wbkang

4

2
Chociaż teoretycznie może to odpowiedzieć na pytanie, lepiej byłoby zawrzeć tutaj istotne części odpowiedzi i podać odnośnik.
Stephen Rauch

1
@StephenRauch Wiem, że zwykłe linki nie są mile widziane, ale jest to ogromny temat i nie jest łatwo streścić w odpowiedzi.
caracal

To był najbardziej czytelny przewodnik, jaki znalazłem. To dobra odpowiedź. :-)
traktuj swoje mody dobrze

DigitalOcean ma również dość obszerny zestaw ćwiczeń i odpowiedniej dokumentacji: digitalocean.com/community/tutorials/...
irbanana
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.