Progmar Marcin Załęczny

Język:

Jak utworzyć skrypt uruchamiany podczas startu systemu Ubuntu 15.04

Począwszy od wersji 15.04 Ubuntu podczas startu korzysta z demona systemd. Oto opis jak dodać skrypt do tzw. autostartu. Potrzebne będą dwa pliki - jeden z naszym skryptem i drugi tzw. plik usługi. Załóżmy że mamy skrypt iptables.sh ustawiający reguły firewalla, który chcemy odpalić po wystartowaniu systememu.

  • Umieszczamy plik iptables.sh (lub symlink do właściwego pliku) w katalogu /usr/lib/systemd/scripts i nadajemy mu uprawnienia do wykonania (755).
  • Następnie tworzymy plik usługi w katalogu /usr/lib/systemd/system. Nazywamy go iptables_sh.service i wpisujemy do niego następującą zawartość:
    [Unit]
    Description=Iptables firewall
    
    [Service]
    Type=oneshot
    ExecStart=/usr/lib/systemd/scripts/iptables.sh
    
    [Install]
    WantedBy=multi-user.target
  • Na koniec wykonujemy komendę: sudo systemctl enable iptables_sh.service Od tej pory skrypt będzie odpalany wraz ze startem systemu.

Gdyby zaś nasz skrypt był parametryzowany argumentami start/stop, np.

start() {
  command_1;
  command_2;
  ...
}

stop() {
  command_3;
  command_4;
  ...
}

case $1 in
  start|stop) "$1" ;;
esac
to nasz plik usługi powinien wyglądać następująco:
[Unit]
Description=Iptables firewall

[Service]
Type=oneshot
ExecStart=/usr/lib/systemd/scripts/iptables.sh start
ExecStop=/usr/lib/systemd/scripts/iptables.sh stop
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target