BHD钱包部署【生态池/合作池】
前序
BHD网址:https://btchd.org/#wallet

注:我这里是centos7, 所以我选linuxPC
部署
解压与配置
tar -zxf bhd-v1.3.4.0-d909c0e-x86_64-linux-gnu.tar.gz

注: 大概就长这个样子, 生态池和合作池是一样的, 端口不同而已。
启动之前记得把data目录替换(如果有原数据的话), 添加配置文件btchd.conf
启动
/opt/bhd-wallet/bin/btchdd -datadir=/opt/bhd-wallet/data/
直接nohup也行, supervisord也行, 下面扔个supervisord维护的配置过来
[program:btchdd_co]
user=root
directory=/opt/bhd-wallet/
environment=LD_LIBRARY_PATH="/opt/bhd-wallet/lib"
command=/opt/bhd-wallet/bin/btchdd -datadir=/opt/bhd-wallet/data/
numprocs=1
startsecs=3
startretries=3
autostart=true
autorestart=true
process_name=%(program_name)s
就这样的启动成功了
验证
1.查看区块
https://btchd.org/explorer/block
对比与自己钱包的块值
/opt/bhd-wallet/btchd-cli.sh getMiningInfo

对比线上最新的+1

下面还有两条出数据代表正常
/opt/bhd-wallet/btchd-cli.sh getblockchaininfo
/opt/bhd-wallet/btchd-cli.sh listsignaddresses
告警shell
注:发现钱包掉线马上告警, 主要使用的是getMininfo去获取每个字段中的值, 然后判断非空, 如果有空, 证明钱包挂了, 这是异常情况, 告警。当告警完之后, 获取到数据代表正常,
这个时候再发一条恢复告警提示管理员或者开发人员, 当无挂掉得时候正常显示, 可以使用nohup指定重定向日志。
#*************************************************************************
# > File Name: btchddProcess.sh
# > Author: chenglee
# > Main : chengkenlee@sina.com
# > Blog : http://www.cnblogs.com/chenglee/
# > Created Time : 2019年08月22日 星期一 14时28分49秒
#*************************************************************************
#!/bin/bash hostname=`hostname`
NetWorkIP=`ip addr |grep inet |grep -v inet6 |grep eth0|awk '{print $2}' |awk -F "/" '{print $1}'` BtchddProcess="btchdd_co"
count=0
#online
webhook="这里填写你的钉钉机器人告警url"
#test function BTCHDDERROR(){
currTime1=`echo $(date +"%Y-%m-%d.%T")`
currchengtime=`echo $(date +"%Y-%m-%d %T")`
SsPid="$$"
curl ''$webhook'' \
-H 'Content-Type: application/json' \
-d '{"msgtype": "text",
"text": {
"content": "
服务器:'$hostname' 发生: '$BtchddProcess'活性故障! [
告警主机:'$hostname'
告警地址:'$NetWorkIP'
监控项目:'$BtchddProcess'
告警等级:高
当前状态:中断
告警信息:'$BtchddProcess' is down
告警时间:'$currTime1'
事件ID:'$SsPid'
]
"
}
}'
}
function BTCHDDRESTART(){
currTime2=`echo $(date +"%Y-%m-%d.%T")`
currchengtime2=`echo $(date +"%Y-%m-%d %T")`
SsPid="$$"
continueTime=$(($(date +%s -d "$currchengtime2") - $(date +%s -d "$currchengtime")));
curl ''$webhook'' \
-H 'Content-Type: application/json' \
-d '{"msgtype": "text",
"text": {
"content": "
服务器:'$hostname' 发生: 进程'$BtchddProcess'活性恢复! [
告警主机:'$hostname'
告警地址:'$NetWorkIP'
监控项目:'$BtchddProcess'
告警等级:中
当前状态:运行
告警信息:'$processname' restart success
告警时间:'$currTime1'
恢复时间:'$currTime2'
持续时间:'$continueTime' s
事件ID:'$SsPid'
]
"
}
}'
} :<<cheng
function BTCHDDRESTARTOFF(){
curl ''$webhook'' \
-H 'Content-Type: application/json' \
-d '{"msgtype": "text",
"text": {
"content": "高级告警:[主机:'$hostname' - 进程:'$BtchddProcess' - 操作:活性检测异常 - 状态:重启失败]"
}
}'
}
cheng function BTCHDDSUCC(){
curl ''$webhook'' \
-H 'Content-Type: application/json' \
-d '{"msgtype": "text",
"text": {
"content": "高级告警:[主机:'$hostname' - 进程:'$BtchddProcess' - 操作:活性检测异常 - 状态:恢复]"
}
}'
} function btstatus(){
#curl -v -X POST 'http://127.0.0.1:8732/burst?requestType=getMiningInfo' > status
curl -X POST 'http://localhost:8911/burst?requestType=getMiningInfo' > status
sleep 2;
Height=`cat status | awk -F ',' '{print$1}' | awk -F ':' '{print$2}'`
GenerationSignature=`cat status | awk -F ',' '{print$2}' | awk -F ':' '{print$2}' | awk -F '"' '{print$2}'`
BaseTarget=`cat status | awk -F ',' '{print$3}' | awk -F ':' '{print$2}' | awk -F '"' '{print$2}'`
TargetDeadline=`cat status | awk -F ',' '{print$4}' | awk -F ':' '{print$2}'`
RequestProcessingTime=`cat status | awk -F ',' '{print$5}' | sed 's/}//' | awk -F ':' '{print$2}'`
}
function SKill(){
Pid=`ps aux | grep "btchdd" | grep -v grep | wc -l`
if [ $Pid > 0 ];then
ps aux | grep "btchdd" | grep -v grep | awk -F ' ' '{print$2}' | xargs kill -9
BTCHDDRESTART
if [ -z "$Height" -o -z "$GenerationSignature" -o -z "$BaseTarget" -o -z "$TargetDeadline" -o -z "$RequestProcessingTime" ];then
echo;
else
BTCHDDSUCC
fi
fi
}
function check(){
btstatus
if [ -z "$Height" -o -z "$GenerationSignature" -o -z "$BaseTarget" -o -z "$TargetDeadline" -o -z "$RequestProcessingTime" ];then
BTCHDDERROR
sleep 5;
count=$[count+1]
echo "[suspend:$count]"
echo "#####1:[$Height],2:[$GenerationSignature],3:[$BaseTarget],4:[$TargetDeadline],5:[$RequestProcessingTime]####"
else
echo "Success"
echo "#####1:[$Height],2:[$GenerationSignature],3:[$BaseTarget],4:[$TargetDeadline],5:[$RequestProcessingTime]####"
sleep 1; if [ $count -gt 0 ];then
BTCHDDRESTART
count=0
echo "[suspend:$count]"
fi
fi
}
function main(){
while :
do
currTime=$(date +"%Y-%m-%d %T")
echo $currTime
check
echo;
sleep 60;
done
}
main


因为配置了supervisord自动拉起, 所以每次中断的时候就会自动重启。
BHD钱包部署【生态池/合作池】的更多相关文章
- Citrix 服务器虚拟化之十八 桌面虚拟化之部署MCS随机桌面池
Citrix 服务器虚拟化之十八 桌面虚拟化之部署MCS随机桌面池 完成桌面模版的制作后,可以开始虚拟桌面池的发布 说明: 环境基于实验十七 1.登录DC服务器创建一个组织单位名为Citrix,然后 ...
- concurrent.futures模块(进程池/线程池)
需要注意一下不能无限的开进程,不能无限的开线程最常用的就是开进程池,开线程池.其中回调函数非常重要回调函数其实可以作为一种编程思想,谁好了谁就去掉 只要你用并发,就会有锁的问题,但是你不能一直去自己加 ...
- Python进阶----异步同步,阻塞非阻塞,线程池(进程池)的异步+回调机制实行并发, 线程队列(Queue, LifoQueue,PriorityQueue), 事件Event,线程的三个状态(就绪,挂起,运行) ,***协程概念,yield模拟并发(有缺陷),Greenlet模块(手动切换),Gevent(协程并发)
Python进阶----异步同步,阻塞非阻塞,线程池(进程池)的异步+回调机制实行并发, 线程队列(Queue, LifoQueue,PriorityQueue), 事件Event,线程的三个状态(就 ...
- python并发编程-进程池线程池-协程-I/O模型-04
目录 进程池线程池的使用***** 进程池/线程池的创建和提交回调 验证复用池子里的线程或进程 异步回调机制 通过闭包给回调函数添加额外参数(扩展) 协程*** 概念回顾(协程这里再理一下) 如何实现 ...
- android线程与线程池-----线程池(二)《android开发艺术与探索》
android 中的线程池 线程池的优点: 1 重用线程池中的线程,避免了线程的创建和销毁带来的性能开销 2 能有效的控制最大并发数,避免大量线程之间因为喜欢抢资源而导致阻塞 3 能够对线程进行简单的 ...
- Python并发编程之线程池&进程池
引用 Python标准库为我们提供了threading和multiprocessing模块编写相应的多线程/多进程代码,但是当项目达到一定的规模,频繁创建/销毁进程或者线程是非常消耗资源的,这个时候我 ...
- (转)websphere线程池 连接池设置
原文:http://www.talkwithtrend.com/Article/207511 池(Pool)是WebSphere中最常涉及的概念之一.从网络.Web 服务器.Web 容器.EJB 容器 ...
- Python-GIL 进程池 线程池
5.GIL vs 互斥锁(*****) 1.什么是GIL(Global Interpreter Lock) GIL是全局解释器锁,是加到解释器身上的,保护的就是解释器级别的数据 (比如垃圾回收的数据) ...
- 并发编程---线程queue---进程池线程池---异部调用(回调机制)
线程 队列:先进先出 堆栈:后进先出 优先级:数字越小优先级越大,越先输出 import queue q = queue.Queue(3) # 先进先出-->队列 q.put('first') ...
随机推荐
- 深入学习c++--多线程编程(二)【当线程间需要共享非const资源】
1. 遇到的问题 #include <iostream> #include <thread> #include <chrono> #include <futu ...
- 【FreeMarker】Spring MVC与FreeMarker整合(二)
前一篇介绍了FreeMarker的基本使用,本例介绍Spring MVC与FreeMarker整合 不熟悉项目搭建,可参考 [FreeMarker]FreeMarker快速入门(一) 整合 1.新建S ...
- Linux系统调优——磁盘I/O(三)
(1).查看I/O运行状态相关工具 1)查看文件系统块大小 对于ext4文件系统,查看文件系统块大小 [root@CentOS6 ~]# tune2fs -l /dev/sda1 | grep siz ...
- 123457123457#0#----com.DoraGame.ShiZi75--前拼后广--识字dora
com.DoraGame.ShiZi75--前拼后广--识字dora
- Hive Essential (4):DML-project,filter,join,union
1. Project data with SELECT The most common use case for Hive is to query data in Hadoop. To achieve ...
- k8s中正确删除一个pod
1.先删除pod 2.再删除对应的deployment 否则只是删除pod是不管用的,还会看到pod,因为deployment.yaml文件中定义了副本数量 实例如下: 删除pod [root@tes ...
- deployment.yaml 带同步时区
[root@lab2 dandang]# cat dandang.v1.yaml apiVersion: v1 kind: ReplicationController metadata: name: ...
- easyui datagrid 让某行复选框置灰不能选
easyui中datagrid 让某行复选框置灰不能进行选中操作,以下为主要部分的code. //加载完毕后获取所有的checkbox遍历 onLoadSuccess: function(data){ ...
- .mmap文件如何打开
.mmap是一种思维导图文件的后缀,可以用Xmind软件打开.
- mac 下mongo的启动和关闭以及启动问题解决
原文地址:https://www.cnblogs.com/leinov/p/7341139.html mac 下mongo的启动和关闭以及启动问题解决 mongo的安装在这:http://www.cn ...