Systemd w wielu dystrybucjach zastąpił init.d co wiąże się z wieloma zmianami w konfiguracji systemu i uruchamianiu usług.
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.