Opublikowano menedżera usług GNU Shepherd 0.9.2 (dawniej dmd), który jest rozwijany przez twórców dystrybucji GNU Guix System jako alternatywa dla systemu inicjującego SysV-init obsługującego zależności. Demon kontroli Shepherd i narzędzia są napisane w języku Guile (jedna z implementacji języka Scheme), który służy również do definiowania ustawień i parametrów uruchamiania usług. Shepherd jest już używany w dystrybucji GuixSD GNU/Linux i ma być również używany w GNU/Hurd, ale może działać na dowolnym systemie operacyjnym zgodnym z POSIX, dla którego dostępny jest język Guile.
Shepherd wykonuje pracę polegającą na uruchamianiu i zatrzymywaniu usług, biorąc pod uwagę relacje między usługami, dynamicznie identyfikując i uruchamiając usługi, od których zależy wybrana usługa. Shepherd obsługuje także wykrywanie konfliktów pomiędzy usługami i zapobieganie ich jednoczesnemu działaniu. Projekt może służyć zarówno jako główny system inicjujący (init z PID 1), jak i w osobnej formie do zarządzania procesami w tle poszczególnych użytkowników (na przykład do uruchamiania tora, privoxy, mcron itp.) z wykonaniem z uprawnieniami tych użytkowników.
Wśród zmian:
- Deskryptory plików używane w Shepherd są teraz oznaczone flagą O_CLOEXEC (zamknięcie przy-exec), a nie są zamykane natychmiast po wykonaniu polecenia exec, co pozwala na przekazywanie uchwytów do usług uruchamianych pośrednio przez polecenie exec.
- Połączenia klientów są teraz przetwarzane w sposób nieblokujący, co zapobiega zawieszaniu się pasterza podczas wysyłania niekompletnego polecenia.
- Zapewnia utworzenie katalogu dla plików dziennika zdefiniowanych w ustawieniu „plik dziennika”, jeśli nie istnieje.
Źródło: opennet.ru