Opublikowano menedżer usług GNU Shepherd 0.9.2 (dawniej dmd), rozwijany przez twórców dystrybucji GNU Guix System jako alternatywa dla systemu inicjalizacji SysV-init, wspierającego zależności. Menedżer demonów i narzędzia Shepherd są napisane w języku Guile (jedna z implementacji języka Scheme), który jest również używany do definiowania ustawień i parametrów uruchamiania usług. Shepherd jest już używany w dystrybucji GuixSD GNU/Linux i jest również ukierunkowany na użycie w GNU/Hurd, ale może działać w każdej systemie zgodnym z POSIX, dla którego dostępny jest język Guile.
Shepherd wykonuje pracę polegającą na uruchamianiu i zatrzymywaniu usług, uwzględniając wzajemne powiązania między usługami, dynamicznie określając i uruchamiając usługi, od których zależy wybrana usługa. Shepherd wspiera również definiowanie konfliktów między usługami i zapobiega ich jednoczesnemu uruchamianiu. Projekt może być używany zarówno jako główny system inicjalizacji (init z PID 1), jak i w wydzielonym trybie do zarządzania procesami w tle pojedynczych użytkowników (na przykład do uruchamiania tor, privoxy, mcron itp.) z uprawnieniami danych użytkowników.
Wśród zmian:
- Używane w Shepherd deskryptory plików są teraz oznaczane flagą O_CLOEXEC (close-on-exec), a nie są zamykane natychmiast po wykonaniu „exec-command”, co pozwala na przekazywanie deskryptorów usługom uruchamianym nie bezpośrednio, lecz poprzez „exec-command”.
- Połączenia klienckie są teraz obsługiwane w trybie nieblokującym, co pozwala na uniknięcie zawieszania się shepherd przy wysyłaniu niepełnej komendy.
- Zapewniono utworzenie katalogu dla plików dziennika określonych w ustawieniu „log-file”, w przypadku jego braku.
Źródło: opennet.ru
