Ubuntu Linux — Как мне запустить биткойн как службу для автоматического запуска?

У меня есть куча других служб, настроенных на автоматическую загрузку при запуске моего сервера Ubuntu (такие службы, как wicd-daemon и VPN), но я не могу понять, как настроить демон биткойнов (bitcoind) для автоматического запуска при запуске. система загружается. (Это в безголовой системе без графического интерфейса или подключенного монитора.)

Я пытаюсь научиться интегрировать биткойн с Python, чтобы я мог писать службы с поддержкой биткойнов, но я хочу, чтобы система автоматически запускала биткойн при загрузке системы, чтобы мне не приходилось делать это вручную. (Это боль в заднице, когда приходится загружать сразу целую кучу блокчейнов. Это съедает время безотказной работы.)

Если этот вопрос уже задавался, пожалуйста, направьте меня на ответ. Я искал, но не смог найти. В противном случае, пожалуйста, помогите мне разобраться!

Спасибо большое.

см. этот каталог: github.com/bitcoin/bitcoin/tree/master/contrib/init , в нем есть сценарии запуска для многих систем инициализации .

Ответы (6)

РЕДАКТИРОВАТЬ : Предостережение emptor в дистрибутивах Ubuntu начиная с 14.10 и initболее поздних версий — было выбрано upstartи поэтапно в будущем . Я не знаю, когда это будет сделано и какое влияние это окажет на сценарии выскочки.

Выдержка со страницы, на которую ссылается RentFree ; обратите внимание, что предполагается, что вы создали пользователя, вызываемого bitcoinuserв целях безопасности:

Те, кто работает с Ubuntu, могут быть знакомы с upstart , заменой sysvinitзагрузки в стиле ( /etc/init.d/*).

Файлы конфигурации для выскочки хранятся в папке /etc/init/*.conf. Я написал следующее для bitcoind:

description "bitcoind"

start on filesystem
stop on runlevel [!2345]
oom score -500
expect fork
respawn
respawn limit 10 60 # 10 times in 60 seconds

script
user=bitcoinuser
home=/home/$user
cmd=$home/bin/bitcoind
pidfile=$home/bitcoind.pid
# Don't change anything below here unless you know what you're doing
[[ -e $pidfile && ! -d "/proc/$(cat $pidfile)" ]] && rm $pidfile
[[ -e $pidfile && "$(cat /proc/$(cat $pidfile)/cmdline)" != $cmd* ]] && rm $pidfile
exec start-stop-daemon --start -c $user --chdir $home --pidfile $pidfile --startas $cmd -b -m
end script

Поместите приведенную выше конфигурацию в /etc/init/bitcoind.conf, затем запустите sudo initctl reload-configuration. Для начала bitcoindзапустите sudo start bitcoind. Чтобы остановиться bitcoind, бегите sudo stop bitcoind.

Вы, вероятно, захотите изменить user , cmd и pidfile на то, что соответствует вашей конфигурации, или вы можете использовать следующее в качестве шаблона:

/home/bitcoinuser
/home/bitcoinuser/bitcoind.pid
/home/bitcoinuser/bin/bitcoind

Хотя один пользователь предлагает следующее исправление в конфигурации:

home=/home/$user
cmd=/usr/bin/bitcoind
pidfile=$home/.bitcoin/bitcoind.pid

а другой предлагает настроить niceпроцесс так, чтобы он не загружал процессор

exec start-stop-daemon --start -c $user --chdir $home --pidfile $pidfile --startas $cmd -b --nicelevel 15 -m
Хотя это работает, в журнале upstart есть такие строки: /proc/self/fd/9: 9: /proc/self/fd/9: [[: not found. Это что?
Если вы используете Ubuntu, попробуйте pastebinit -i /etc/init/bitcoind.conf, что выдаст URL-адрес с конфигурацией, скопированной на общедоступную страницу. Дважды проверьте URL-адрес, чтобы убедиться, что там нет ничего личного, а затем вставьте URL-адрес сюда.
Вау, не знал pastebinit, что существует, круто! Вот оно: paste.ubuntu.com/6691665 , но это в значительной степени копирование и вставка отсюда.
Я действительно не вижу ничего, что могло бы вызвать проблемы, но я не тратил много времени на init.d/upstart — вот мой для справки, где я настроил его для ведения журнала и более явного вывода . Обратите внимание, что я использую bitcoinuserкак выделенный пользователь. В стороне о pastebinit: Вы также можете подключиться к нему для вывода команды - больше информации здесь .
Этот ответ почти правильный. Вы должны измениться expect daemonна expect forkи oom neverна oom score -500. Подробнее см.: stackoverflow.com/a/25731881/1157309 .
@c.hill, вы можете редактировать ответы здесь :-) - я исправил, как было предложено

В исходном дереве Bitcoin Core есть скрипт upstart для Ubuntu . Использование этого является наиболее правильным способом.

Однако я просто вхожу в систему под учетной записью пользователя, с которой хочу запустить демон Bitcoin Core, запускаю терминал (если я нахожусь в графическом интерфейсе) и запускаю следующую команду для редактирования моего crontab:

crontab -e

Затем я добавляю следующую строку:

@reboot bitcoind -daemon

Сохраните файл и выйдите. Теперь при каждой загрузке компьютера будет запускаться демон Bitcoin Core. При завершении работы init/upstart/systemd/whatever отправит ему сигнал SIGTERM, который bitcoind поймает и интерпретирует как команду для запуска безопасного завершения работы.

но выскочка больше не используется в Ubuntu, верно?
да что это значит?

Наконец-то я остановился на этой настройке для своей малины.

nano /etc/systemd/system/bitcoind.service

содержимое файлаbitcoind.service

[Unit]
Description=bitcoin
After=network.target

[Service]
Type=forking
User=pi
Group=pi

Environment=BITCOIN_PID=/home/pi/.bitcoin/bitcoin.pid
Environment=BITCOIN_HOME=/home/pi/.bitcoin

ExecStart=/usr/local/bin/bitcoind
ExecStop=/bin/kill -15 $MAINPID

[Install]
WantedBy=multi-user.target

Перезагрузить демон systemctl

systemctl daemon-reload

Включен новый сервис bitcoind

systemctl enable bitcoind

Команды для запуска или остановки службы

systemctl stop bitcoind
systemctl start bitcoind

Показать статус службы

systemctl status bitcoind.service  

Больше информации на https://github.com/bitcoin/bitcoin/tree/master/contrib/init.

спасибо за помощь Janus Troelsen

Обновлять

Не приводить аргументы, так как я посчитал, что в

/home/pi/.bitcoin/bitcoin.conf
хороший, но вы пропустили d: /etc/systemd/system/bitcoind.service.
Все хорошо, кроме того, что ты хочешьType=simple

Я никогда не запускал его раньше. Вы сказали, что bitcoind — это демон, поэтому вот как настроить демон для запуска при запуске:

Обычно демон имеет свой сценарий инициализации в /etc/init.d/каталоге.

sudo /etc/init.d/bitcoind start

Если демон нужно инициализировать при запуске, то он будет связан в /etc/rc0.d/или /etc/rc1.d/или ... /etc/rc6.d/... и т.д.

0 -> 6 - это уровни запуска:

0 - Halt
1 - Single User Mode
2 - Multiuser
3 - Full Multiuser Mode
4 - unused
5 - Full Multiuser Mode with x11
6 - Reboot

вы также можете добавить скрипт, в котором работает ваш демон

/etc/rc.local

Если это скрипт Python, вы можете написать в этот файл:

python /directory/to/init/script/bitcoind.py

Другой альтернативой является выполнение update-rc.d:

sudo update-rc.d bitcoind defaults

defaults, укажет update-rc.dзапустить конфигурацию по умолчанию, когда дело доходит до уровня запуска. Вы можете изменить свой уровень запуска, это пример:

update-rc.d bitcoind start 20 2 3 4 5 . stop 20 0 1 6

запустить man update-rc.d, есть и другие примеры .

Чтобы удалить его из автозагрузки, запустите:

sudo update-rc.d bitcoind remove
Я думаю, что удалил bitcoindиз своего автозапуска вашу последнюю команду. Теперь кажется, что у меня проблемы с активацией снова. У моего bitcoind был специальный рабочий каталог. Я подозреваю, что скрипт запуска содержал этот каталог. Я удалил файл физически с /etc/rc.localпомощью /etc/initэтой команды? Потому что у меня больше нет файла, связанного с bitcoind.
Ну, у меня есть страница, bitcoin.serviceв /etc/systemd/system/которой содержится правильный путь.

Кажется, это ваш ответ: https://bitcointalk.org/index.php?topic=25518.0

Я разработал сценарий, который может помочь вам одновременно установить И запустить демон CLI Биткойн.

sudo apt-get install software-properties-common
<your password>
y
sudo apt-get update
sudo apt-add-repository ppa:bitcoin/bitcoin

sudo apt-get update
sudo apt-get upgrade
y
sudo apt-get install bitcoind
y
bitcoind -daemon
bitcoind -testnet -daemon

* Предполагается, что пробел между apt-add-repository и update должен быть из-за подсказки нажать ENTER.