Systemd wprowadza koncepcję jednostek systemd. Jednostki są reprezentowane przez pliki konfiguracyjne umieszczone w jednym z katalogów:
- /usr/lib/systemd/system/ – jednostki zainstalowane z pakietów RPM.
- /run/systemd/system/ — jednostki utworzone w czasie działania systemu. Ten katalog ma wyższy priorytet niż katalog z jednostkami zainstalowanymi z pakietów.
- /etc/systemd/system/ — jednostki utworzone i zarządzane przez administratora systemu. Ten katalog ma wyższy priorytet niż katalog z jednostkami utworzonymi w czasie działania systemu.
Tworzymy plik naszej usługi:
# touch /etc/systemd/system/routing-settings.service # chmod 664 /etc/systemd/system/routing-settings.service
o następującej zawartości:
[Unit] Description=Routing Settings Service After=network.target
[Service]
Type=oneshot
User=root
ExecStart=/root/routing.sh
[Install]
WantedBy=multi-user.target
User=root - uruchamianie jako root! Określ (lub nie określaj) użytkownika, pod którym ma być wykonywany Twój skrypt. Mój skrypt musi być uruchamiany jako root. Nie mogę powiedzieć, że mnie to cieszy, ponieważ konieczne jest ścisłe kontrolowanie lokalizacji skryptu i uprawnień do niego.
Type=oneshot oznacza, że proces zostanie zakończony przed uruchomieniem kolejnych jednostek. Jest to w pełni odpowiednie dla skryptów.
Sprawdzamy:
# systemctl start routing-settings
Jeśli po wykonaniu skryptu zobaczymy oczekiwany wynik, włączmy tę „usługę” do autostartu:
# systemctl enable routing-settings
Spróbujmy ponownie uruchomić system. Powinno działać.
Spójrzmy, kiedy została uruchomiona nasza usługa:
# systemctl status routing-settings
