bitcoind.service: Не удается открыть PID-файл /run/bitcoind/bitcoind.pid (пока?) после запуска: Operation not allowed

На Ubuntu 20.04 LTS я сделал службу / systemd для bitcoind, но когда я запускаю его, я получаю эту ошибку:

Не удается открыть PID файл /run/bitcoind/bitcoind.pid (еще?) после запуска: Operation not allowed

Что звучит как проблема с разрешениями(?), но я понимаю, что PID файл и/или папка, содержащая его, являются своего рода эфемерными, например, появляются только во время работы службы, и поэтому как бы вы назначили продолжительные разрешения для чего-то, что приходит и уходит? Также не кажется, что для этого вообще нужно изменять разрешения. Что я могу сделать, чтобы заставить устройство работать правильно?

● bitcoind.service - Bitcoin daemon
     Loaded: loaded (/etc/systemd/system/bitcoind.service; enabled; vendor preset: enabled)
     Active: failed (Result: exit-code) since Sun 2021-06-20 09:46:57 CDT; 14s ago
    Process: 104861 ExecStart=/usr/local/bin/bitcoind -daemon -pid=/run/bitcoind/bitcoind.pid -conf=/home/first/.bitcoin/bitcoin.conf -datadir=/blockchain/.bitcoin/data (code=exited, status=0/SUCCESS)
   Main PID: 104866 (code=exited, status=1/FAILURE)

Jun 20 09:46:57 server systemd[1]: Starting Bitcoin daemon...
Jun 20 09:46:57 server systemd[1]: bitcoind.service: Can't open PID file /run/bitcoind/bitcoind.pid (yet?) after start: Operation not permitted
Jun 20 09:46:57 server systemd[1]: Started Bitcoin daemon.
Jun 20 09:46:57 server systemd[1]: bitcoind.service: Main process exited, code=exited, status=1/FAILURE
Jun 20 09:46:57 server systemd[1]: bitcoind.service: Failed with result 'exit-code'.

Я использую этот файл bitcoind.service, адаптированный из Stadicus' Raspibolt setup guide:

# RaspiBolt: systemd unit for bitcoind
# /etc/systemd/system/bitcoind.service

[Unit]
Description=Bitcoin daemon
After=network.target

[Service]

# Service execution
###################

ExecStart=/usr/local/bin/bitcoind -daemon \
                                  -pid=/run/bitcoind/bitcoind.pid \
                                  -conf=/home/first/.bitcoin/bitcoin.conf \
                                  -datadir=/blockchain/.bitcoin/data


# Process management
####################
Type=forking
PIDFile=/run/bitcoind/bitcoind.pid
#ExecStartPost=/bin/sh -c 'chown first:first /run/bitcoind/bitcoind.pid'
#Restart=on-failure
#TimeoutSec=300
#RestartSec=30


# Directory creation and permissions
####################################

# Run as bitcoin:bitcoin
User=first
Group=first

# /run/bitcoind
RuntimeDirectory=bitcoind
RuntimeDirectoryMode=0710

# Hardening measures
####################

# Provide a private /tmp and /var/tmp.
PrivateTmp=true

# Mount /usr, /boot/ and /etc read-only for the process.
ProtectSystem=full

# Deny access to /home, /root and /run/user
ProtectHome=true

# Disallow the process and all of its children to gain
# new privileges through execve().
NoNewPrivileges=true

# Use a new /dev namespace only populated with API pseudo devices
# such as /dev/null, /dev/zero and /dev/random.
PrivateDevices=true

# Deny the creation of writable and executable memory mappings.
MemoryDenyWriteExecute=true

[Install]
WantedBy=multi-user.target



Вы можете видеть, что я пытался добавить это в файл bitcoind.service:

ExecStartPost=/bin/sh -c 'chown first:first /run/bitcoind/bitcoind.pid'

Но это не сработало и, похоже, выполняется до того, как существует файл bitcoind.pid.

0
задан 20 June 2021 в 22:02

2 ответа

Не удается открыть файл PID /run/bitcoind/bitcoind.pid

Либо / run , либо / run / bitcoid , либо /run/bitcoind/bitcoind.pid не существует, либо, если он существует, он не принадлежит пользователь группы, которому это нужно.

Пользователь = первый предполагает, что пользователь является «первым», и когда файл pid принадлежит другому пользователю (/ группа), то «первый» вы также получаете «доступ запрещен».

 # Запуск как биткойн: биткойн 
Пользователь = первый 
Группа = первый 
 

Обратите внимание, что здесь указано, что это должно быть:

 # Запускать как биткойн : биткойн 
Пользователь = биткойн 
Группа = биткойн 
 

, а не «первый».

0
ответ дан 28 July 2021 в 11:26

Два вывода:

  1. Раздел «Меры по усилению» моих файлов bitcoin.service содержит:
# Deny access to /home, /root and /run/user
ProtectHome=true

/home/.bitcoin — это место, где у меня есть файл bitcoin.conf, так что в этом проблема. Перемещение bitcoin.conf в другое место,или отключение ProtectHome позволяет службе успешно запуститься в данном конкретном случае.

  1. Следующее сообщение об ошибке не было связано со сбоем службы:
Can't open PID file /run/bitcoind/bitcoind.pid (yet?) after start: Operation not permitted

Это сообщение появляется время от времени, даже когда служба запускается нормально, и поэтому, по-видимому, в данном случае это вообще не проблема.

0
ответ дан 28 July 2021 в 11:26

Другие вопросы по тегам:

Похожие вопросы: