After 21 years of development: GNU service manager Shepherd reaches version 1.0
Version 1.0 of the GNU service manager for GNU/Linux systems brings time-controlled services, extended logging and revised service control.
(Image: Laura Blu / Shutterstock.com)
After 21 years of development since the release of the first alpha, version 1.0 of the GNU Shepherd service manager is now available. With the first major version, the development team has made numerous optimizations and introduced new functions.
Support for time-controlled services
The herd status SERVICE command provides more detailed information about services in version 1.0, including the main PID (Process Identifier) and recently logged messages.
Also new is support for scheduled services, similar to Cron, a service on Unix-like systems that automatically executes scheduled tasks. In addition, the update introduces a log rotation service that manages old log files.
Videos by heise
New services replace old ones
The new system-log service replaces the traditional syslogd by receiving messages from applications on the /dev/log socket and forwarding them to log files according to administrator rules. In addition, the timer service replaces the at command to delay the execution of commands. The transient service enables commands to be executed in the background, similar to systemd-run.
On GNU/Linux, GNU Shepherd now supports the kexec function to boot directly into a new kernel. Apparently the --silent option was previously "silently" ignored by shepherd. According to the release notes, this is no longer the case with the update. In addition, the tool now also documents deprecation warnings. The development team has also removed the outdated GOOPS interface.
Bit by bit
The so-called source tarball shepherd-1.0.0.tar.gz is, according to the release notes for version 1.0, bit-for-bit reproducible from the corresponding Git tag, which should increase the security of the service manager. In addition, GNU Shepherd 1.0 supports gzip and zstd in the protocol rotation.
Several translations are available for GNU Shepherd, including German, Romanian, Swedish and Ukrainian. A further eight languages are partially supported. An overview can be found at translationproject.org.
A look under the hood
GNU Shepherd is written in the Guile programming language, the official extension language for the GNU operating system, and manages daemons (background programs) on a system. The service manager can be used both as the main program (PID 1) at system startup and by users to control their own services.
It is configured in Guile Scheme, an implementation of the Scheme programming language. Shepherd supports various methods for starting services, such as time-controlled actions and systemd-like socket activation. Version 1.0 requires version 3.x of the Guile language – 2.2 is no longer supported.
More information about GNU Shepherd 1.0 can be found in the release notes.
(mdo)