[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: trying to write my own herd service
From: |
Liliana Marie Prikler |
Subject: |
Re: trying to write my own herd service |
Date: |
Sat, 05 Nov 2022 10:02:33 +0100 |
User-agent: |
Evolution 3.46.0 |
Am Samstag, dem 05.11.2022 um 02:21 +0300 schrieb Adam Kandur:
> Hi guix!
> I tried to write my own herd service, that's what i did
> ```
> (define (my-daemon-shepherd-service _)
> (list (shepherd-service
> (documentation "")
> (provision '(go-github-com-KefirTheAutomator-daemon))
> (requirement '(networking))
> (start #~(make-forkexec-constructor
> (list
> (string-append
> #$go-github-com-KefirTheAutomator-daemon "/bin/daemon")
> " -pidFile=/var/run/my-daemon.pid"
> " -logFile=/var/log/my-daemon.log")))
> (stop #~(make-kill-destructor)))))
>
> (define my-daemon-service-type
> (service-type (name 'my-daemon)
> (extensions
> (list (service-extension shepherd-root-service-type
> my-daemon-shepherd-
> service)))
> (default-value #f)
> (description "")))
> ```
First things first, writing your own shepherd service from Guix adds a
layer of difficulty: Not only do you need to understand shepherd, you
also need to understand how Guix glues things together. I would
recommend starting with a simple hand-written service, because that
makes it easier to invoke shepherd as a user and inspect its output.
> (go-github-com-KefirTheAutomator-daemon is my dummy daemon that just
> creates a process and writes to it's log file).
>
> This was pulled from my channel, but when I am trying to start the
> services, it turns of and disables
> ```
> user@workstation ~$ sudo herd status go-github-com-KefirTheAutomator-
> daemon
> Status of go-github-com-KefirTheAutomator-daemon:
> It is stopped.
> It is disabled.
> Provides (go-github-com-KefirTheAutomator-daemon).
> Requires (networking).
> Conflicts with ().
> Will be respawned.
> Last respawned on Sat Nov 05 02:14:33+0300 2022.
>
> ```
>
> Can anyone help me to find out what is wrong, I didn't find any
> recommendations on writing herd services?
Your process probably dies too often, thus causing shepherd to disable
it. If it is intended to be a one-shot service, mark it as such. If
not, check there are unfulfilled requirements.
Cheers