redis-dump之can't find gem redis-dump
基于上篇博文CentOS6.10安装redis-dump小插曲继续下面的介绍
一、redis-dump工具简单说明
退出bash shell窗口重新登录bash
未加载rvm,直接执行redis-dump时报错
于是重新加载rvm后再次执行redis-dump成功
于是简单总结如下:
redis-dump工具是基于ruby编写的脚本,所以必须在ruby环境下才能执行此命令工具
所以在执行redis-dump命令前必须先加载ruby环境,source /etc/profile.d/rvm.sh就是加载ruby环境或者是source /usr/local/rvm/scripts/rvm
由于一开始服务器安装的ruby是2.3.7的版本rvm install 2.3.7,所以要切换到ruby-2.3.7 下
rvm --create ruby-2.3.7
二、redis数据备份脚本分析
2.1、原备份脚本:
上面的脚本直接在shell执行时有问题的,导致写入定时任务后,备份redis数据失败
2.2、失败的分析过程
先加载ruby环境以及切换到ruby-2.3.7下
[root@MQ1-S ~]# sh dump_redisdata.sh
虽然shell界面还有warn输出,但是查看redis-dump 进程,脚本已经成功运行,
但是不在服务器的shell 命令行先执行命令加载ruby环境以及切换到ruby-2.3.7环境下 就直接在服务器bash shell命令行手动执行脚本,就会报如下错,脚本执行失败,自动退出
**已经足够说明未加载rvm和切换到ruby2.3.7环境下
直接把原来的备份脚本写入定时任务,这也是备份脚本没执行成功的根本原因。
**
2.3、关于/bin/bash --login的分析
虽然出现/bin/bash --login 输出,并不影响脚本的执行,但是看着怪不舒服的。于是想办法解决。
于是网上查资料,才发现是服务器的环境变量加载的问题。
现在简单普及下环境变量的
关于环境变量的介绍:
为了能做到在执行脚本前能够提前自动加载ruby的环境,所以选择了~/.bashrc 加载这个环境变量的文件
同时要在这个文件后面添加下面2行代码来加载ruby换进变量
[root@MQ1-S ~]# cat /root/.bashrc
[root@MQ1-S ~]#
2.4、修改后的成功的脚本
[root@MQ1-S scripts]# cat dump_redisdata.sh
写入定时任务:
查看进程,可知,此时脚本已经可以写入定时任务自动执行了
到此redis-dump备份redis数据脚本的修改完毕。