В Ubuntu 20.04 LTS я сделал блок service/systemd для bitcoind, но когда я его запускаю, я получаю эту ошибку:
Не удается открыть файл PID /run/bitcoind/bitcoind.pid (пока?) после запуска: операция не разрешена
Это звучит как проблема с разрешением (?), но я понимаю, что файл PID и / или папка, содержащая его, являются своего рода эфемерными, например, появляются только во время работы службы, и поэтому как бы вы назначили постоянные разрешения для чего-то, что приходит и идет? Также кажется, что для этого вообще нужно изменить разрешения. Что я могу сделать, чтобы устройство работало правильно?
▪ bitcoind.service — биткойн-демон
Загружено: загружено (/etc/systemd/system/bitcoind.service; включено; предустановка поставщика: включена)
Активно: сбой (результат: код выхода) с вс 20.06.2021 09:46:57 CDT; 14 сек. назад
Процесс: 104861 ExecStart=/usr/local/bin/bitcoind -daemon -pid=/run/bitcoind/bitcoind.pid -conf=/home/first/.bitcoin/bitcoin.conf -datadir=/blockchain/.bitcoin/data (код=выход, статус=0/УСПЕХ)
Основной PID: 104866 (код=выход, статус=1/ОШИБКА)
20 июня 09:46:57 server systemd[1]: Запуск демона Биткойн...
20 июня 09:46:57 сервер systemd[1]: bitcoind.service: невозможно открыть файл PID /run/bitcoind/bitcoind.pid (пока?) после запуска: операция не разрешена
20 июня, 09:46:57, сервер systemd[1]: запущен биткойн-демон.
20 июня, 09:46:57, сервер systemd[1]: bitcoind.service: основной процесс завершен, код = завершен, статус = 1/FAILURE
20 июня, 09:46:57, сервер systemd[1]: bitcoind.service: Ошибка с результатом «код выхода».
Я использую этот файл bitcoind.service, адаптированный из Руководство по настройке Stadicus Raspibolt:
# RaspiBolt: модуль systemd для биткойнов
# /etc/systemd/system/bitcoind.service
[Ед. изм]
Description=Биткойн-демон
После=network.target
[Оказание услуг]
# Выполнение службы
####################
ExecStart=/usr/local/bin/bitcoind -daemon \
-pid=/run/bitcoind/bitcoind.pid \
-conf=/home/first/.bitcoin/bitcoin.conf \
-datadir=/блокчейн/.биткойн/данные
# Управление процессом
#####################
Тип = разветвление
PIDFile=/run/bitcoind/bitcoind.pid
#ExecStartPost=/bin/sh -c 'chown first:first /run/bitcoind/bitcoind.pid'
#Restart=при сбое
#TimeoutSec=300
#RestartSec=30
# Создание каталога и разрешения
######################################
# Запускаем как биткойн: биткойн
Пользователь=первый
Группа=первая
# /запустить/биткойн
RuntimeDirectory=биткойн
RuntimeDirectoryMode = 0710
# Закаливающие мероприятия
#####################
# Укажите приватные файлы /tmp и /var/tmp.
PrivateTmp=истина
# Монтировать /usr, /boot/ и /etc только для чтения для процесса.
ProtectSystem=полный
# Запретить доступ к /home, /root и /run/user
ПротектХоме=истина
# Запретить процессу и всем его дочерним элементам
# новые привилегии через execve().
Ноньюпривилегес=истина
# Используйте новое пространство имен /dev, заполненное только псевдоустройствами API
# такие как /dev/null, /dev/zero и /dev/random.
Частные устройства = истина
# Запретить создание отображений доступной для записи и исполняемой памяти.
MemoryDenyWriteExecute=true
[Установить]
WantedBy=многопользовательская.цель
Вы можете видеть, что я пытался добавить это в файл bitcoind.service:
ExecStartPost=/bin/sh -c 'chown first:first /run/bitcoind/bitcoind.pid'
Но это не сработало и, похоже, выполняется до того, как существует файл bitcoind.pid.