doc: Recommend avoiding execl, execle or execlp in mcron job specifications.

* doc/guix.texi (Scheduled Job Execution): Adjust the 'updatedb' example and
add a new tip.
This commit is contained in:
Maxim Cournoyer 2022-11-28 22:47:16 -05:00
parent 3cff7bfa9b
commit 3578fb1323
No known key found for this signature in database
GPG key ID: 1260E46482E63562

View file

@ -18940,8 +18940,7 @@ gexps to introduce job definitions that are passed to mcron
;; job's action as a Scheme procedure. ;; job's action as a Scheme procedure.
#~(job '(next-hour '(3)) #~(job '(next-hour '(3))
(lambda () (lambda ()
(execl (string-append #$findutils "/bin/updatedb") (system* (string-append #$findutils "/bin/updatedb")
"updatedb"
"--prunepaths=/tmp /var/tmp /gnu/store")) "--prunepaths=/tmp /var/tmp /gnu/store"))
"updatedb")) "updatedb"))
@ -18980,6 +18979,12 @@ the job would appear as ``Lambda function'' in the output of
@command{herd schedule mcron}, which is not nearly descriptive enough! @command{herd schedule mcron}, which is not nearly descriptive enough!
@end quotation @end quotation
@quotation Tip
Avoid calling the Guile procedures @code{execl}, @code{execle} or
@code{execlp} inside a job specification, else mcron won't be able to
output the completion status of the job.
@end quotation
For more complex jobs defined in Scheme where you need control over the top For more complex jobs defined in Scheme where you need control over the top
level, for instance to introduce a @code{use-modules} form, you can move your level, for instance to introduce a @code{use-modules} form, you can move your
code to a separate program using the @code{program-file} procedure of the code to a separate program using the @code{program-file} procedure of the