Systemd

Linux Debian systemd

systemd

Systemd w wielu dystrybucjach zastąpił init.d co wiąże się z wieloma zmianami w konfiguracji systemu i uruchamianiu usług.

rc.local

W wielu dystrybucjach brakuje mechanizmu zastępującego plik rc.local w którym umieszczało się zwyczajowo skrypty, które miały zostać jednorazowo uruchomione po zakończeniu procedury startu systemu. Zamiast tego wypada utworzyć własny moduł systemd, który wykona tą pracę.

Tworzymy plik /etc/systemd/system/my-startup.service o zawartości:

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/local/libexec/my-startup-script

[Install]
WantedBy=multi-user.target

Następnie oznaczamy ten moduł jako aktywny wydając polecenie:
systemctl enable my-startup.service

Parametry Type=oneshot + RemainAfterExit=yes powodują, że moduł zostanie wywołany raz i pozostanie "aktywny", przez co nie będzie ponownie uruchamiany.

Jeżeli zależy nam na tym by skrypt został uruchomiony dopiero po zakończeniu uruchamiania kontkretnych usług musimy to odpowiednio zadeklarować dodając poniższą sekcję:

[Unit]
Wants=network-online.target
After=network-online.target

W ten sposób nasz moduł zostanie uruchomiony po zainicjowaniu sieci.

Poprzedni wpis Następny wpis