Pe Ubuntu 20.04 LTS, am făcut o unitate service/systemd pentru bitcoind, dar când îl pornesc, primesc această eroare:
Nu se poate deschide fișierul PID /run/bitcoind/bitcoind.pid (încă?) după pornire: operațiunea nu este permisă
Ceea ce sună ca o problemă de permisiune (?), dar înțeleg că fișierul PID și/sau folderul care îl conține este un fel de efemer, ca și cum ar apărea doar în timp ce serviciul rulează și, deci, cum ați atribui permisiuni de durată pentru ceva ce vine si pleaca? Se pare, de asemenea, că permisiunile ar trebui modificate deloc pentru aceasta. Ce pot face pentru ca unitatea să funcționeze corect?
â bitcoind.service - daemon Bitcoin
Încărcat: încărcat (/etc/systemd/system/bitcoind.service; activat; prestabilit furnizor: activat)
Activ: a eșuat (Rezultat: cod de ieșire) din Dum 2021-06-20 09:46:57 CDT; acum 14s
Proces: 104861 ExecStart=/usr/local/bin/bitcoind -daemon -pid=/run/bitcoind/bitcoind.pid -conf=/home/first/.bitcoin/bitcoin.conf -datadir=/blockchain/.bitcoin/data (cod=ieșit, stare=0/SUCCESS)
PID principal: 104866 (cod=ieșit, stare=1/Eșec)
20 iunie 09:46:57 server systemd[1]: Se pornește demonul Bitcoin...
20 iunie 09:46:57 server systemd[1]: bitcoind.service: Nu se poate deschide fișierul PID /run/bitcoind/bitcoind.pid (încă?) După pornire: Operațiunea nu este permisă
20 iunie 09:46:57 server systemd[1]: a pornit demonul Bitcoin.
20 iunie 09:46:57 server systemd[1]: bitcoind.service: Proces principal ieșit, cod=ieșit, stare=1/Eșec
20 iunie 09:46:57 server systemd[1]: bitcoind.service: a eșuat cu rezultatul „exit-code”.
Folosesc acest fișier bitcoind.service adaptat de la Ghidul de configurare Raspibolt al lui Stadicus:
# RaspiBolt: unitate systemd pentru bitcoind
# /etc/systemd/system/bitcoind.service
[Unitate]
Descriere=Daemon Bitcoin
După=rețea.țintă
[Serviciu]
# Executarea serviciului
##################
ExecStart=/usr/local/bin/bitcoind -daemon \
-pid=/run/bitcoind/bitcoind.pid \
-conf=/home/first/.bitcoin/bitcoin.conf \
-datadir=/blockchain/.bitcoin/data
# Administrarea procesului
####################
Tip = bifurcare
PIDFile=/run/bitcoind/bitcoind.pid
#ExecStartPost=/bin/sh -c 'chown first:first /run/bitcoind/bitcoind.pid'
#Restart=la eșec
#TimeoutSec=300
#RestartSec=30
# Crearea directorului și permisiuni
###################################
# Rulați ca bitcoin:bitcoin
Utilizator=primul
Grup = primul
# /run/bitcoind
RuntimeDirectory=bitcoind
RuntimeDirectoryMode=0710
# Măsuri de întărire
####################
# Furnizați un /tmp și /var/tmp privat.
PrivateTmp=adevărat
# Montați /usr, /boot/ și /etc doar pentru citire pentru proces.
ProtectSystem=plin
# Interziceți accesul la /home, /root și /run/user
ProtectHome=adevarat
# Nu permite procesului și tuturor copiilor săi să câștige
# noi privilegii prin execve().
NoNewPrivileges=adevărat
# Utilizați un nou spațiu de nume /dev populat numai cu pseudo-dispozitive API
# cum ar fi /dev/null, /dev/zero și /dev/random.
PrivateDevices=true
# Respinge crearea de mapări de memorie inscriptibile și executabile.
MemoryDenyWriteExecute=true
[Instalare]
WantedBy=multi-user.target
Puteți vedea că am încercat să adaug asta în fișierul bitcoind.service:
ExecStartPost=/bin/sh -c 'chown first:first /run/bitcoind/bitcoind.pid'
Dar nu a funcționat și pare să se execute înainte de a exista un fișier bitcoind.pid.