Linux Fedora 23: Automatyczne uruchamianie usług przy starcie systemu

19-lut-2017

Dawno dawno temu kiedy chciałeś uruchomić usługę w systemie Linux dodawałeś plik o nazwie

S<XY><Name> oraz K<XY>Name

w katalogu /etc/init.d a potem w folderach /etc/rc[12345].d tworzyłeś link do odpowiednich plików. Pliki S* były uruchamiane podczas przechodzenia systemu do danego, określonego przez numer katalogu tzw. run-level, w celu uruchomienia usługi a pliki K miały za zadanie kończyć pracę tych usług. Liczby <XY> określały natomiast kolejność w jakiej usługi będą uruchamiane. Proste i logiczne.

W miarę ewolucji RedHat/Fedory, postanowiono jednak skorzystać z mechanizmów charakterystycznych dla systemd. Generalnie init.d ani rc2.d, rc3.d itd. nie są wykorzystywane.

Podczas definiowania nowej usługi należy korzystać z plików o nazwach

<ServiceName>.service

znajdujących się w

/etc/systemd/system

Jeśli instalujesz nowy serwis to należy w tym folderze utworzyć nowy plik, którego zawartość może wyglądać np. tak (przykład dla usługi Sybase):
[sap@SAPSybase system]$ more sybase.service
[Unit]
Description=SYBASE ASE
After=network.target

[Service]
ExecStart=/opt/sap/sybase_init start
Type=forking
PIDFile=/opt/sap/sybase.pid
ExecStop=/opt/sap/sybase_init stop

[Install]
WantedBy=multi-user.target

W tym przypadku określamy, jak uruchamiać bazę danych Sybase. Oto znaczenie poszczególnych linijek:

  • Description – czyli nazwa usługi przyjazna dla użytkowników
  • After – czyli na jakim poziomie uruchamiania musi się znajdować serwer aby uruchomić tę usługę
  • ExecStart – czyli ścieżka do pliku, który zawiera w sobie skrypt uruchamiający Sybase
  • PIDFile – plik w jakim zostanie zapisany identyfikator  procesu na jakim pracuje usługa po uruchomieniu
  • ExecStop – ścieżka do skryptu zatrzymującego usługę
  • WantedBy – definicja na jaki poziom uruchamiania przejdzie system po pomyślnym uruchomieniu usługi

Załóżmy więc, że plik został już utworzony. To jeszcze nie wystarczy do tego aby system wiedział, że ta usługa ma być uruchamiana zaraz po uruchomieniu Linuxa. Do dokończenia definicji trzeba jeszcze trochę pobawić się poleceniem systemctl:

Zaczynamy od poinformowania systemctl, że pojawiła się nowa usługa:

systemctl daemon-reload

teraz można już z ręki uruchamiać lub zatrzymywać usługę:

sudo systemctl start sybase.service

sudo systemctl stop sybase.service

A jak sprawić aby usługa  startowała sama po starcie systemu operacyjnego?

sudo systemctl enable sybase.service

A jeśli trzeba sprawdzić w jakim statusie znajduje się dana usługa to skorzystaj z:

sudo systemctl status sybase.service

Aby wyświetlić listę dostępnych do skonfigurownia usług i sprawdzenia czy mają się one uruchamiać posłuż się poleceniem:

sudo systemctl list-unit-files

Więcej na ten temat: https://docs.fedoraproject.org/en-US/Fedora/15/html/Deployment_Guide/ch-Services_and_Daemons.html

Komentarze są wyłączone

Autor: Rafał Kraik