Skip to content

Commit 689a65d

Browse files
committed
contrib/init: Better systemd integration
1. Make logs available to journalctl (systemd's logging system) by not specifying -daemonwait, which rightfully has its own set of stdout and stderr descriptors (a user invoking with -daemonwait on the command line should not see any logs). It makes more sense not to daemonize in the systemd context anyway. 2. Make systemd aware of when bitcoind is started and in steady state by specifying -startupnotify='systemd-notify --ready' and Type=notify. NotifyAccess=all is necessary so that the spawned thread for startupnotify is allowed to inform systemd of bitcoind's readiness. Note that NotifyAccess=exec won't work because it only allows sd_notify readiness signalling from Exec*= declarations in the .service file. 3. Also make systemd aware of when bitcoind is stopping by specifying -shutdownnotify='systemd-notify --stopping' Note that we currently don't allow multiple *notify commands, but users can override it in systemd via: # systemctl edit bitcoind By specifying something like: [Service] ExecStart=/usr/bin/bitcoind -pid=/run/bitcoind/bitcoind.pid \ -conf=/etc/bitcoin/bitcoin.conf \ -datadir=/var/lib/bitcoind \ -startupnotify='systemd-notify --ready; mystartupcommandhere' \ -shutdownnotify='systemd-notify --stopping; myshutdowncommandhere'
1 parent 3118425 commit 689a65d

File tree

1 file changed

+7
-4
lines changed

1 file changed

+7
-4
lines changed

contrib/init/bitcoind.service

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,11 @@ After=network-online.target
1818
Wants=network-online.target
1919

2020
[Service]
21-
ExecStart=/usr/bin/bitcoind -daemonwait \
22-
-pid=/run/bitcoind/bitcoind.pid \
21+
ExecStart=/usr/bin/bitcoind -pid=/run/bitcoind/bitcoind.pid \
2322
-conf=/etc/bitcoin/bitcoin.conf \
24-
-datadir=/var/lib/bitcoind
23+
-datadir=/var/lib/bitcoind \
24+
-startupnotify='systemd-notify --ready' \
25+
-shutdownnotify='systemd-notify --stopping'
2526

2627
# Make sure the config directory is readable by the service user
2728
PermissionsStartOnly=true
@@ -30,8 +31,10 @@ ExecStartPre=/bin/chgrp bitcoin /etc/bitcoin
3031
# Process management
3132
####################
3233

33-
Type=forking
34+
Type=notify
35+
NotifyAccess=all
3436
PIDFile=/run/bitcoind/bitcoind.pid
37+
3538
Restart=on-failure
3639
TimeoutStartSec=infinity
3740
TimeoutStopSec=600

0 commit comments

Comments
 (0)