21 years since its inception, GNU Shepherd 1.0.0 is released

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

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 with herd status; instead it shows information about the shepherd process itself.
  • On Linux, reboot --kexec lets you reboot straight into a new Linux kernel previously loaded with kexec --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.

More about

Don't miss