GNU Shepherd is a service manager designed to oversee the system’s daemons. It functions both as an “init” system (PID 1) and as a tool for unprivileged users to manage per-user daemons.
GNU Shepherd
GNU Shepherd supports various daemon startup mechanisms, including inetd
, systemd-style socket activation
, and timers
. The Shepherd provides built-in services such as syslog and log rotation. Configuration and extensions are written in Guile Scheme, leveraging a straightforward, memory-safe, and callback-free programming model.
The Shepherd is a minimalist yet capable service manager that oversees services, tracking their state and dependencies while managing actions like starting, stopping, and restarting as needed. While the task is straightforward, ensuring it is done reliably while giving users visibility and control over their services presents a more complex challenge.
What’s new?
Here are the highlights compared to the 0.10.x series:
- Support for timed services: These services spawn a command or run Scheme code periodically according to a predefined calendar.
herd status SERVICE
now shows high-level information about services (main PID, command, addresses it is listening to, etc.) instead of its “running value”. It also shows recently-logged messages.- To make it easier to discover functionality, that command also displays custom actions applicable to the service, if any. It also lets you know if a replacement is pending, which is when you can restart to upgrade.
herd status root
is no longer synonymous withherd status
; instead it shows information about theshepherd
process itself.- On Linux,
reboot --kexec
lets you reboot straight into a new Linux kernel previously loaded withkexec --load
.
A brand-new logo, designed by Luis Felipe López Acevedo, is now available under a Creative Commons license, and the project has launched an official website.