menedżer serwisu (), rozwijany przez programistów dystrybucji GNU Guix System jako zależność wspierająca alternatywę dla systemu inicjalizacji SysV-init. Działający demon i narzędzia Shepherd napisane są w języku Guile (jedna z implementacji języka Scheme), który jest również wykorzystywany do definiowania ustawień i parametrów uruchamiania usług. Shepherd jest już używany w dystrybucji GuixSD GNU/Linux i ma na celu również współpracę z GNU/Hurd, ale może działać w każdej zgodnej z POSIX systemie operacyjnym, dla którego dostępny jest język Guile.
Shepherd może być używany jako główny system inicjalizacji (init z PID 1) lub w oddzielny sposób do zarządzania procesami w tle dla poszczególnych użytkowników (na przykład do uruchamiania tor, privoxy, mcron itp.) z uprawnieniami danych użytkowników. Shepherd realizuje uruchamianie i zatrzymywanie serwisów, biorąc pod uwagę wzajemne zależności między nimi, dynamicznie określając i uruchamiając usługi, od których zależy wybrany serwis. Shepherd wspiera również definiowanie konfliktów między serwisami i zapobiega ich jednoczesnemu uruchamianiu.
Główne nowości:
- W make-kill-destructor zaimplementowano zabijanie grupy procesów;
- Dodano parametr «default-pid-file-timeout», określający czas oczekiwania na utworzenie pliku PID;
- Jeśli plik PID nie pojawi się w czasie oczekiwania, zapewnione jest zakończenie całej grupy procesów (rozwiązuje pozostawienie procesów roboczych bez pliku PID);
- W «make-forkexec-constructor» dodano parametr «#:file-creation-mask», zaimplementowano tworzenie plików logów i zaprzestano wspierania starego konwencji wywołań;
- Rozwiązano problemy z kompilacją na systemach bez prctl, takich jak GNU/Hurd;
- Usunięto niedociągnięcie, które prowadziło do wysyłania SIGALRM co sekundę.
Źródło: opennet.ru
