4
6
Fork
You've already forked shepherd
0
No description
  • Scheme 69.9%
  • Shell 26.1%
  • Makefile 1.9%
  • M4 1.3%
  • C 0.4%
  • Other 0.4%
Chad House e142c24be5
service: Fix memory leak in process monitor’s ‘fork/monitor’
The ‘process-monitor’ event loop was recurring from inside a ‘catch’
expression in the ‘fork/monitor’ case, leaking memory associated with the
exception handler.
In the case of inetd services, this would cause a per-connection leak as new
transient service instances were spawned.
* modules/shepherd/service.scm (process-monitor): Move loop recursion in
‘fork/monitor’ case to outside the ‘catch’ expression to avoid leaking memory
associated with the exception handler.
* NEWS: Update.
Fixes: shepherd/shepherd#40 
2025年11月07日 21:53:49 +01:00
.guix doc: Use https:// URLs. 2025年10月22日 23:54:53 +02:00
build-aux doc: Use https:// URLs. 2025年10月22日 23:54:53 +02:00
doc doc: Use https:// URLs. 2025年10月22日 23:54:53 +02:00
etc doc: Use https:// URLs. 2025年10月22日 23:54:53 +02:00
modules service: Fix memory leak in process monitor’s ‘fork/monitor’ 2025年11月07日 21:53:49 +01:00
po nls: Update de, ro, sr, sv, and uk translations. 2025年10月22日 11:20:29 +02:00
tests logger: ‘open-log-file’ creates missing parent directories. 2025年10月23日 22:05:58 +02:00
.dir-locals.el service: ‘fork+exec-command’ child process exits upon exception. 2024年11月27日 23:41:43 +01:00
.gitignore .gitignore: adjust for tests/, m4/, po/ 2024年04月10日 18:11:43 +02:00
.guix-authorizations Add dannym's key. 2025年04月11日 21:03:20 +02:00
.guix-channel Change source code URL to Codeberg. 2025年05月14日 16:06:41 +02:00
ANNOUNCE--0.5 dmd -0.5 announcment 2012年07月10日 08:47:24 +02:00
ANNOUNCE--0.6 dmd -0.6 announcment 2012年07月10日 08:47:31 +02:00
ANNOUNCE--0.7 dmd -0.7 announcment 2012年07月10日 08:47:38 +02:00
AUTHORS ‘AUTHORS’ file suggests checking the Git log. 2024年11月03日 17:53:45 +01:00
ChangeLog maint: Remove ‘ChangeLog’ generation. 2024年11月03日 17:59:40 +01:00
ChangeLog-2003 maint: Use UTF-8 instead of ISO-8859-1. 2025年03月22日 19:26:18 +01:00
configure.ac build: Bump to version 1.0.8. 2025年10月22日 11:21:56 +02:00
COPYING doc: Sync COPYING with gnulib file. 2025年10月22日 23:54:53 +02:00
guix.scm maint: Move Guix files to '.guix'. 2023年06月05日 11:30:53 +02:00
halt.in Move commands to (shepherd scripts xyz). 2016年01月27日 10:37:48 +01:00
herd.in build: Capture the source and object directories of Fibers. 2022年03月30日 14:25:30 +02:00
Makefile.am doc: Use https:// URLs. 2025年10月22日 23:54:53 +02:00
NEWS service: Fix memory leak in process monitor’s ‘fork/monitor’ 2025年11月07日 21:53:49 +01:00
README doc: Use https:// URLs. 2025年10月22日 23:54:53 +02:00
reboot.in Move commands to (shepherd scripts xyz). 2016年01月27日 10:37:48 +01:00
shepherd.in maint: Update Fibers URL. 2025年10月13日 23:19:09 +02:00
THANKS Update THANKS. 2024年11月09日 22:54:44 +01:00

* An -*- outline -*- of the GNU Daemon Shepherd.
** What is the Shepherd?
The GNU Daemon Shepherd or GNU Shepherd is a service manager written in
Guile that looks after the herd of system services, providing a
replacement for the service-managing capabilities of SysV-init (or any
other init) with a dependency-based system with a convenient interface.
It is intended for use on GNU/Linux and GNU/Hurd, but it is supposed to work
on every POSIX-like system where Guile is available.
In a previous life, the GNU Shepherd was known as GNU dmd, the
daemon-managing daemon.
** Requirements
The GNU Shepherd depends on the following pieces of software:
 - GNU Guile 3.0.x, https://gnu.org/software/guile
 - Fibers 1.1.0 or later, https://codeberg.org/fibers/fibers
** Getting started
Like all GNU packages, this program can be installed using familiar
incantations such as:
 autoreconf -vfi
 ./configure --prefix=/some/where
 make
 make check
 make install
Actually setting up the Shepherd currently requires some work. You
should read the Texinfo manual for details:
 info -f shepherd.info
** Installing development snapshots with Guix
The Shepherd repository can be used as a Guix "channel". To do that, change
~/.config/guix/channels.scm along these lines:
 (append (list (channel
		 (name 'shepherd)
		 (url "https://codeberg.org/shepherd/shepherd.git")
		 (branch "main")
		 (introduction
		 (make-channel-introduction
		 "788a6d6f1d5c170db68aa4bbfb77024fdc468ed3"
		 (openpgp-fingerprint
		 "3CE464558A84FDC69DB40CFB090B11993D9AEBB5")))))
	 %default-channels)
Once that is done, run ‘guix pull’. This will give you additional ‘shepherd’
packages with higher version numbers:
 guix package -A shepherd
You can then install it with ‘guix install shepherd’, or e.g. use it in an
operating-system configuration:
 (operating-system
 ...
 (essential-services
 (modify-services (operating-system-default-essential-services
 this-operating-system)
 (shepherd-root-service-type
 config =>
 (shepherd-configuration
 (inherit config)
 (shepherd (@ (shepherd-package) shepherd)))))))
** More information
Detailed instructions on installing the GNU Shepherd are available in
the file `INSTALL'. A list of user-visible changes between releases can
be found in the file `NEWS'.
See the Git version control history for a list of people who contributed to
this software in the form of changes to the code:
 https://codeberg.org/shepherd/shepherd/commits/branch/main
This program can be distributed under the terms of the GNU General
Public License, version 3 or any later version, see the file `COPYING'
for details. The Texinfo manual can be distributed under the terms of
the GNU Free Documentation License, version 1.3 or any later version,
see the manual for details. Note that for any copyright year range
specified as YYYY-ZZZZ in this package, the range specifies every single
year in that closed interval.
The GNU Shepherd home page is at:
 https://shepherding.services/
The GNU Shepherd is developed jointly with the GNU Guix project. Both
are essential components in putting the pieces together to build the GNU
system. Join us now!
** Hacking
Using GNU Guix, you can enter a development environment by running:
 guix shell -D -f guix.scm
or simply:
 guix shell
The first time you obtain a copy of the repository, authenticate it by
running:
 guix git authenticate				\
 788a6d6f1d5c170db68aa4bbfb77024fdc468ed3	\
 3CE464558A84FDC69DB40CFB090B11993D9AEBB5
The command exits with zero on success, and errors out otherwise. It installs
Git hooks such as subsequent invocations of ‘git pull’ and ‘git push’ will
automatically authenticate it.
** Reporting bugs
Please report bugs on Codeberg:
 https://codeberg.org/shepherd/shepherd/issues
Alternatively, you can send bug reports by email to <bug-guix@gnu.org>, with
"Shepherd" and the version number in the Subject line.