Temat: [mało znane pakiety] pservice
W repozytorium OpenWrt można znaleźć się setki pakietów. Niektóre są mało znane, choć realizują ciekawe funkcje. Jednym z nich jest pservice.
Wielu (a zwłaszcza początkujących) użytkowników często zadaje pytanie "jak uruchomić własny program przy starcie systemu"? O ile pakiet jest dostosowany do OpenWrt to zwykle zawiera już skrypty startowe, ale jeżeli to jest nasz własny skrypt lub mamy tylko program w postaci binarki to z pomocą przyjdzie nam pakiet pservice - skrypt pozwalający na uruchamianie poleceń wykorzystujący mechanizm obecny w OpenWrt tzw procd.
Ale po co to?
Oczywiście pservice jest opcjonalny - bardziej zaawansowani użytkownicy mogą napisać swój własny skrypt startowy, ci mniej - mogą użyć np. /etc/rc.local do tego celu. Jednakże sprawa się komplikuje kiedy nie chcemy tylko uruchomić procesu ale także pilnować czy on działa i restartować go jak się wyłączy czy jak zostanie zmieniony jakiś plik. Te wszystkie mechanizmy zapewnia procd, więc nie musimy się nimi zajmować samodzielnie.
Instalacja
# opkg update
# opkg install pservice
# /etc/init.d/pservice enable
Konfiguracja
Interesuje nas plik /etc/config/pservice. Są w w nim zawarte dwa proste przykłady dobrze opisujące możliwe do ustawienia parametry:
config pservice
option disabled 0
option name 'demo0'
option command /bin/sh
option respawn_maxfail 0
list args -c
list args 'env | logger -t $name; exec sleep $time'
list env 'v0=0'
list env 'v1=val with space'
list env 'name=demo0'
list env 'time=1799'
list file /tmp/sleep.conf
Dla każdego programu który chcemy uruchomić tworzymy nową sekcję typu pservice. Nadajemy mu jakąś nazwę (name), koniecznie ustawiamy disabled na 0 (jeżeli ma być włączone i się uruchamiać), w command podajemy program do uruchomienia lub - dla skryptów - /bin/sh. Reszta jest opcjonalna i zależy co chcemy przekazać do programu:
- list args: argumenty przekazywane do programu (dla skryptów dajemy -c oraz dalej nazwę skryptu)
- list env: zmienne środowiskowe jeżeli jakieś muszą być
- list file: lista plików których zmiana powoduje restart serwisu
O innych parametrach można przeczytać na oryginalnej stronie projektu: https://github.com/yousong/waller/tree/ … e/pservice
Po konfiguracji pamiętajmy o restarcie routera lub po prostu włączeniu serwisu:
# /etc/init.d/pservice start