* trying to write my own herd service
@ 2022-11-04 23:21 Adam Kandur
2022-11-05 9:02 ` Liliana Marie Prikler
0 siblings, 1 reply; 3+ messages in thread
From: Adam Kandur @ 2022-11-04 23:21 UTC (permalink / raw)
To: guix-devel
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 "")))
```
(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?
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: trying to write my own herd service
2022-11-04 23:21 trying to write my own herd service Adam Kandur
@ 2022-11-05 9:02 ` Liliana Marie Prikler
2022-11-05 13:26 ` EuAndreh
0 siblings, 1 reply; 3+ messages in thread
From: Liliana Marie Prikler @ 2022-11-05 9:02 UTC (permalink / raw)
To: Adam Kandur, guix-devel
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
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: trying to write my own herd service
2022-11-05 9:02 ` Liliana Marie Prikler
@ 2022-11-05 13:26 ` EuAndreh
0 siblings, 0 replies; 3+ messages in thread
From: EuAndreh @ 2022-11-05 13:26 UTC (permalink / raw)
To: Adam Kandur, Liliana Marie Prikler, guix-devel
> > (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")))
[...]
> Your process probably dies too often, thus causing shepherd to disable
> it.
I'd guess that it is dying too often because it is failing to be launched. The
extra spaces before the "-pidFile" and "-logFile" arguments aren't ignored, like
when in a shell, but are included explicitly. A contrived equivalent example
is:
$ ls -l
total 36
drwxr-xr-x 6 andreh users 4096 Nov 4 19:42 Desktop
drwxr-xr-x 7 andreh users 4096 Oct 31 21:07 Documents
...
$ ls '-l'
total 36
drwxr-xr-x 6 andreh users 4096 Nov 4 19:42 Desktop
drwxr-xr-x 7 andreh users 4096 Oct 31 21:07 Documents
...
$ ls ' -l'
ls: cannot access ' -l': No such file or directory
I believe that a similar thing is happening to the options to your program, and
it is failing to execute because of that. You could confirm it by looking that
the logs.
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2022-11-05 13:27 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-11-04 23:21 trying to write my own herd service Adam Kandur
2022-11-05 9:02 ` Liliana Marie Prikler
2022-11-05 13:26 ` EuAndreh
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/guix.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).