Я настраиваю Monit для мониторинга демона Биткойна, чтобы он работал круглосуточно и без выходных, и перезапускал его, если что-то пойдет не так. Бинарный биткойн находится на /usr/local/bin/bitcoind
, а каталог данных находится по адресу /home/bitcoin/.bitcoin
.
Я сказал Monit следить за демоном через файл pid /var/run/bitcoind.pid
каждые 2 минуты и запускать / останавливать демон от имени пользователя bitcoin
. Однако именно здесь я провел бесчисленные часы, пытаясь понять, что не так.
Потому что у меня нет скрипта запуска / выскочки для bitcoind
, У меня он напрямую передает команды самому двоичному файлу, что можно увидеть с помощью следующих /etc/monit/monitrc
файл:
set daemon 120
set logfile /var/log/monit.log
check process bitcoind with pidfile "/var/run/bitcoind.pid"
start program "/usr/local/bin/bitcoind -pid=/var/run/bitcoind.pid -datadir=/home/bitcoin/.bitcoin -daemon"
as uid bitcoin and gid bitcoin
stop program "/usr/local/bin/bitcoind stop"
as uid bitcoin and gid bitcoin
if failed port 8332 for 2 cycles then restart
Когда система запускается, я вхожу в систему как пользователь bitcoin
и инициировать ps -u bitcoin
. Конечно же, bitcoind
отображается как работающий под моим пользователем. Однако, когда я получаю Monit для отображения статуса через monit status
, ответ сначала отображается как execution failed
, затем not monitored
.
Я проверил /var/run/
пока bitcoind
запущен и обнаружил, что нет такого файла с именем bitcoind.pid
, что заставляет меня думать, что bitcoind
не имеет достаточных разрешений для создания pid
файл в /var/run
во время работы как пользователь bitcoin
.
В качестве альтернативного решения я оставил файл pid, созданный в местоположении по умолчанию (/home/bitcoin/.bitcoin/bitcoind.pid
), но корень не может получить к нему доступ, что также приводит к тому же результату.
В /var/log/monit.log
файл не предоставляет никакой полезной информации, поэтому используйте «обертки», которые я пробовал.
Все это можно решить, запустив bitcoind
так как root
, однако меня беспокоят вопросы безопасности.
Вы правы, предполагая, что bitcoin
у пользователя не будет разрешения на запись /var/run
, тем не мение root
воля уметь читать /home/bitcoin/.bitcoin/bitcoind.pid
. Я бы оставил PID в последнем месте, а затем поработал бы еще над выяснением, почему monit не читает это второе место. Моя ставка будет опечаткой в пути в конфиге monit.