如何防止数据丢失? Bash 计数脚本 - cronjob

How do I prevent a loss of data? Bash script for counting - cronjob

我有一个小的 bash 脚本可以计算来自区块链的已处理块。在时间 A 我将块高度写入变量 block1 并且在时间 B 我写入块高度进入变量 block2 在我让脚本休眠 3600 秒然后从 block2 中减去 block1 ]

到目前为止一切运行顺利,我将数据存储到 mysql 数据库中。但现在我的问题是:

如何防止数据丢失?

如果我想计算一天中的所有块数,让脚本休眠 24 小时似乎不是一个好主意。当脚本在睡眠 23 小时后失败时,它什么也不等待。我怎样才能摆脱这个问题?

脚本:

#!/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/nebkas

block1=$( blockchain status |jq .sync_info.latest_block_height | sed -e 's/^"//' -e 's/"$//' ) 

sleep 3600

block2=$( blockchain status |jq .sync_info.latest_block_height | sed -e 's/^"//' -e 's/"$//' ) 


count=$(expr $block2 - $block1)

DB_USER='user';
DB_PASSWD='password';
DB_HOST='host';
DB_NAME='database';
TABLE='table';



mysql --user=$DB_USER --password=$DB_PASSWD $DB_NAME --host=$DB_HOST<< EOF

INSERT INTO $TABLE (\`blocks\`) VALUES ( "$count");
EOF

block1 写入数据库(可能带有时间戳)- 如果您每分钟或每 5 分钟都这样做,您可以使用不同的脚本从数据库中提取您想要的数据。