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
W 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

Potrzebujesz profesjonalnej pomocy? Skontaktuj się z nami!

WebInsider poleca księgowość wFirma
WebInsider korzysta z VPSa w HitMe.pl
WebInsider poleca VPSy DigitalOcean
WebInsider poleca serwis Vindicat
Napisz komentarz
wipl_napisz-komentarz_01Jeśli informacje zawarte na tej stronie okazały się pomocne, możesz nam podziękować zostawiając poniżej swój komentarz.

W tej formie możesz również zadać dodatkowe pytania dotyczące wpisu, na które - w miarę możliwości - spróbujemy Ci odpowiedzieć.
Linki partnerskie
Niektóre z linków na tej stronie to tzw. "linki partnerskie", co oznacza, że jeśli klikniesz na link i dokonasz wymaganej akcji (np. zakup/rejestracja) możemy otrzymać za to prowizję. Pamiętaj, że polecamy tylko te produkty i usługi, z których sami korzystamy, i uważamy, że są tego na prawdę warte... :-)
Znaki towarowe i nazwy marek
W niektórych wpisach (oraz innych miejscach na stronie) mogą być przedstawione/użyte znaki towarowe i/lub nazwy marek, które stanowią własność intelektualną tych podmiotów, a zostały użyte wyłącznie w celach informacyjnych.

Potrzebujesz profesjonalnej pomocy? Skontaktuj się z nami!