Czasem potrzebujemy ustawić by jakieś operacje (np. uruchomienie programu/usługi) były wykonywane razem ze startem systemu. Dziś przedstawię 2-3 takie metody. Standardowo będę bazował na systemie Debian – powinno dziać we wszystkich dystrybucjach, w tym Raspbian (Raspberry Pi) czy Ubuntu. W pozostałych dystrybucjach może być wymagana mała korekta, choć niekoniecznie…

Skrypt w init.d

Skrypt startowy w ramach init.d sprawdzi się zwłaszcza przy bardziej skomplikowanych usługach/projektach – dostajemy do ręki spore możliwości, w tym opcje związane z zarządzaniem stanem (start, stop, restart…).

Samo przygotowanie skryptu (czy przerobienie/dostosowanie „zwykłego skryptu” który już mamy) nie jest specjalnie skomplikowane, choć oczywiście trzeba zachować pewien „szkielet” pliku, w czym pomoże Wam przykładowy/wzorcowy plik:

/etc/init.d/skeleton

Przykładowe skrypty możecie również znaleźć na naszej stroni:

Chyba najprostszy, przykładowy skrypt:

 #!/bin/sh ### BEGIN INIT INFO # Provides: nazwa_usługi # Required-Start: $remote_fs $syslog $all # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Krótki opis działania # Description: Dłuższy opis działania ### END INIT INFO ### START config here: ZMIENNA="nazwa_usługi" ### END config here. start() { echo "Start $ZMIENNA" # Jakiś kod } stop() { echo "Stop $ZMIENNA" # Jakiś kod } case "$1" in start) start ;; stop) stop ;; restart) stop start ;; *) echo "Usage: /etc/init.d/nazwa_usługi {start|stop|restart}" exit 1 esac exit 0 

 

Tak przygotowany skrypt należy zapisać w katalogu /etc/init.d:

/etc/init.d/nazwa_usługi

Następnie ustawiamy typ pliku na wykonywalny

sudo chmod +x /etc/init.d/nazwa_usługi

Na koniec aktywacja:

update-rc.d nazwa_usługi defaults
Debian 8 Jessie zamiast powyższego polecenia można użyć:

sudo insserv nazwa_usługi

A czasem – przy niektórych zależnościach start/stop – jest to wręcz wymagane (a przynajmniej mocno zalecane).

Skryptem można też sterować ręcznie, za pomocą komend:

sudo service nazwa_usługi start sudo service nazwa_usługi stop sudo service nazwa_usługi restart

A jak byście chcieli wyłączyć skrypt to wystarczy skorzystać z polecenia:

sudo update-rc.d nazwa_usługi remove

/etc/rc.local

Jest to plik przetwarzany przy każdym starcie systemu – możemy tu dodać polecenie lub ścieżkę do skryptu który ma się wykonać podczas startu systemu.

Zasada jest banalna – po prostu przed linijką „exit 0” dodajemy np.:

echo "System został uruchomiony"

Lub:

/ścieżka/do/skryptu

CRON

Czasem niektórzy zapominają, że również CRONa można wykorzystać do tego by uruchomić komendę lub skrypt przy każdym uruchomieniu systemu.

W tym celu zamiast deklarowania kiedy ma zostać uruchomione polecenie lub skrypt korzystamy z „@reboot”, np.:

@reboot echo "System uruchomiony" @reboot /ścieżka/do/skryptu &

Więcej o CRONie przeczytacie w naszym wcześniejszym wpisie, który został w całości poświęcony temu zagadnieniu…

(!) Zgłoś błąd na stronie