У меня есть куча других служб, настроенных на автоматическую загрузку при запуске моего сервера Ubuntu (такие службы, как wicd-daemon и VPN), но я не могу понять, как настроить демон биткойнов (bitcoind) для автоматического запуска при запуске. система загружается. (Это в безголовой системе без графического интерфейса или подключенного монитора.)
Я пытаюсь научиться интегрировать биткойн с Python, чтобы я мог писать службы с поддержкой биткойнов, но я хочу, чтобы система автоматически запускала биткойн при загрузке системы, чтобы мне не приходилось делать это вручную. (Это боль в заднице, когда приходится загружать сразу целую кучу блокчейнов. Это съедает время безотказной работы.)
Если этот вопрос уже задавался, пожалуйста, направьте меня на ответ. Я искал, но не смог найти. В противном случае, пожалуйста, помогите мне разобраться!
Спасибо большое.
РЕДАКТИРОВАТЬ : Предостережение 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
/proc/self/fd/9: 9: /proc/self/fd/9: [[: not found
. Это что?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 .В исходном дереве Bitcoin Core есть скрипт upstart для Ubuntu . Использование этого является наиболее правильным способом.
Однако я просто вхожу в систему под учетной записью пользователя, с которой хочу запустить демон Bitcoin Core, запускаю терминал (если я нахожусь в графическом интерфейсе) и запускаю следующую команду для редактирования моего crontab:
crontab -e
Затем я добавляю следующую строку:
@reboot bitcoind -daemon
Сохраните файл и выйдите. Теперь при каждой загрузке компьютера будет запускаться демон Bitcoin Core. При завершении работы init/upstart/systemd/whatever отправит ему сигнал SIGTERM, который bitcoind поймает и интерпретирует как команду для запуска безопасного завершения работы.
Наконец-то я остановился на этой настройке для своей малины.
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.
Янус Трельсен