Puncte:0

bitcoind.service: Nu se poate deschide fișierul PID /run/bitcoind/bitcoind.pid (încă?) după pornire: operațiunea nu este permisă

drapel my

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.

Puncte:0
drapel cn

Nu se poate deschide fișierul PID /run/bitcoind/bitcoind.pid

Fie /alerga sau /run/bitcoid sau /run/bitcoind/bitcoind.pid nu există sau dacă există, nu este deținut de utilizatorul grupului care are nevoie de el.

Utilizator=primul ar presupune că utilizatorul este „primul” și când fișierul pid este deținut de un alt utilizator (/grup), atunci „primul” veți primi și o „permisiune refuzată”.

# Rulați ca bitcoin:bitcoin
Utilizator=primul
Grup = primul

Rețineți că aici se spune că ar trebui să fie:

# Rulați ca bitcoin:bitcoin
Utilizator=bitcoin
Grup=bitcoin

și nu „primul”.

Puncte:0
drapel my

Două constatări:

  1. Secțiunea „Măsuri de întărire” a fișierelor mele bitcoin.service conține:
# Interziceți accesul la /home, /root și /run/user
ProtectHome=adevarat

/home/.bitcoin este locul unde am fișierul bitcoin.conf, așa că asta este problema. Relocarea bitcoin.conf în altă parte sau dezactivarea ProtectHome permite serviciului să pornească cu succes în acest caz particular.

  1. Următorul mesaj de eroare nu are legătură cu defecțiunea serviciului:
Nu se poate deschide fișierul PID /run/bitcoind/bitcoind.pid (încă?) după pornire: operațiunea nu este permisă

Acest mesaj apare sporadic chiar și atunci când serviciul pornește normal și astfel, aparent, nu este deloc o problemă în acest caz.

drapel cn
Vă rugăm să folosiți doar secțiunea de răspunsuri pentru RĂSPUNSURI. Extindeți întrebarea adăugând informații suplimentare.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.