mirror of
https://git.savannah.gnu.org/git/guix.git
synced 2026-04-06 21:20:33 +02:00
services: shepherd: Add ‘transient’ and ‘timer’.
* gnu/services/shepherd.scm (shepherd-timer-service-type) (shepherd-transient-service-type): New variables. * doc/guix.texi (Shepherd Services): Document them. Change-Id: I9b622e7e947e7a6384c2701a313d0c7080a0a5f6
This commit is contained in:
@@ -45702,6 +45702,39 @@ system:
|
||||
(shepherd my-shepherd))))))
|
||||
@end lisp
|
||||
|
||||
@cindex @code{transient} service, Shepherd
|
||||
@defvar shepherd-transient-service-type
|
||||
This service type represents the Shepherd's @code{transient} service,
|
||||
which lets you spawn commands in the background and interact with them
|
||||
as regular Shepherd service; it is similar to @command{systemd-run}.
|
||||
|
||||
For example, the command below spawns @command{rsync} in the background,
|
||||
in an environment where the @env{SSH_AUTH_SOCK} environment variable has
|
||||
the given value:
|
||||
|
||||
@example
|
||||
herd spawn transient -E SSH_AUTH_SOCK=$SSH_AUTH_SOCK -- \
|
||||
rsync -e ssh -vur . backup.example.org:
|
||||
@end example
|
||||
|
||||
@xref{Transient Service Maker,,, shepherd, The GNU Shepherd Manual}, for
|
||||
more info on the @code{transient} service.
|
||||
@end defvar
|
||||
|
||||
@cindex @code{timer} service, Shepherd
|
||||
@defvar shepherd-timer-service-type
|
||||
This is the service type representing the Shepherd's @code{timer}
|
||||
service, which lets you schedule the execution of commands, similar to
|
||||
the venerable @command{at} command. Here is an example:
|
||||
|
||||
@example
|
||||
herd schedule timer at 07:00 -- mpg123 Music/alarm.mp3
|
||||
@end example
|
||||
|
||||
@xref{Timer Service,,, shepherd, The GNU Shepherd Manual}, for more info
|
||||
on the @code{timer} service.
|
||||
@end defvar
|
||||
|
||||
@defvar %shepherd-root-service
|
||||
This service represents PID@tie{}1.
|
||||
@end defvar
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2013-2016, 2018-2024 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2013-2016, 2018-2025 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
|
||||
;;; Copyright © 2018 Carlo Zancanaro <carlo@zancanaro.id.au>
|
||||
;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
||||
@@ -81,6 +81,8 @@
|
||||
shepherd-service-upgrade
|
||||
|
||||
user-processes-service-type
|
||||
shepherd-timer-service-type
|
||||
shepherd-transient-service-type
|
||||
|
||||
assert-valid-graph))
|
||||
|
||||
@@ -668,4 +670,52 @@ read-only, just before rebooting/halting. Processes still running after a few
|
||||
seconds after @code{SIGTERM} has been sent are terminated with
|
||||
@code{SIGKILL}.")))
|
||||
|
||||
;;; shepherd.scm ends here
|
||||
|
||||
;;;
|
||||
;;; Timer and transient service maker.
|
||||
;;;
|
||||
|
||||
(define shepherd-timer-service-type
|
||||
(shepherd-service-type
|
||||
'shepherd-timer
|
||||
(const (shepherd-service
|
||||
(provision '(timer))
|
||||
(requirement '(user-processes))
|
||||
(modules '((shepherd service timer)))
|
||||
(free-form #~(timer-service
|
||||
'#$provision
|
||||
#:requirement '#$requirement))))
|
||||
#t ;ignored
|
||||
(description "The Shepherd @code{timer} service lets you schedule commands
|
||||
dynamically, similar to the @code{at} command that your grandparents would use
|
||||
on that Slackware they got on a floppy disk. For example, consider this
|
||||
command:
|
||||
|
||||
@example
|
||||
herd schedule timer at 07:00 -- mpg123 Music/alarm.mp3
|
||||
@end example
|
||||
|
||||
It does exactly what you would expect.")))
|
||||
|
||||
(define shepherd-transient-service-type
|
||||
(shepherd-service-type
|
||||
'shepherd-transient
|
||||
(const (shepherd-service
|
||||
(provision '(transient))
|
||||
(requirement '(user-processes))
|
||||
(modules '((shepherd service transient)))
|
||||
(free-form #~(transient-service
|
||||
'#$provision
|
||||
#:requirement '#$requirement))))
|
||||
#t ;ignored
|
||||
(description "The Shepherd @code{transient} service lets you run commands
|
||||
asynchronously, in the background, similar to @command{systemd-run}, as in
|
||||
this example:
|
||||
|
||||
@example
|
||||
herd spawn transient -E SSH_AUTH_SOCK=$SSH_AUTH_SOCK -- \\
|
||||
rsync -e ssh -vur . backup.example.org:
|
||||
@end example
|
||||
|
||||
This runs @command{rsync} in the background, as a service that you can inspect
|
||||
with @command{herd status} and stop with @command{herd stop}.")))
|
||||
|
||||
Reference in New Issue
Block a user