Danny Milosavljevic <dan...@scratchpost.org> skribis: >> Sounds like postgresql died and shepherd did not notice? Or maybe it >> keeps trying to respawn it? What did /var/log/shepherd.log say? > > 2016-03-19 10:34:48 Service postgres has been started. > 2016-03-19 10:34:49 Respawning postgres.
OK. >> However, daemons can usually be told to write to syslog, which is more >> appropriate than writing things to stdout/stderr anyway. > > It can always be unable to open syslog for some reason. > > If shepherd can't/doesn't redirect stderr on its own, it would be nice to > have init write it somewhere and everyone else inherit it as default. Just > throwing it away is not nice. Agreed. > But I agree, the chance of being able to write it to syslog is high. Btw: How > does guixsd know to start the syslog service before the postgres service? Syslogd is another Shepherd service, so all we need is to express this dependency. >>What’s the right command-line/configuration option to have postgresql use >>syslog? > > The option is > > log_destination = 'syslog' > > in postgresql.conf > > which is generated in gnu/services/databases.scm (%default-postgres-config). Could you try this and report back?
diff --git a/gnu/services/databases.scm b/gnu/services/databases.scm index 6c3b829..690375e 100644 --- a/gnu/services/databases.scm +++ b/gnu/services/databases.scm @@ -1,6 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2015 David Thompson <da...@gnu.org> -;;; Copyright © 2015 Ludovic Courtès <l...@gnu.org> +;;; Copyright © 2015, 2016 Ludovic Courtès <l...@gnu.org> ;;; Copyright © 2016 Leo Famulari <l...@famulari.name> ;;; ;;; This file is part of GNU Guix. @@ -56,6 +56,7 @@ host all all ::1/128 trust")) (define %default-postgres-config (mixed-text-file "postgresql.conf" + "log_destination = 'syslog'\n" "hba_file = '" %default-postgres-hba "'\n" "ident_file = '" %default-postgres-ident "'\n")) @@ -116,7 +117,7 @@ host all all ::1/128 trust")) (list (shepherd-service (provision '(postgres)) (documentation "Run the PostgreSQL daemon.") - (requirement '(user-processes loopback)) + (requirement '(user-processes loopback syslogd)) (start #~(make-forkexec-constructor #$start-script)) (stop #~(make-kill-destructor))))))))
> Does shepherd back off from respawing it eventually (if it respawns too fast) > or will it log the same messages into syslog once every 0.1 s until my disk > is full? :-> Yes, it avoids respawning too fast. Thanks, Ludo’.