近期公司上线新项目,要搭建新环境,写了个redis一键安装脚本,在此记录。 系统环境:
[root@Test3 ~]# cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)
[root@Test3 ~]# uname -a
Linux Test3 3.10.0-693.el7.x86_64 #1 SMP Tue Aug 22 21:09:27 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
redis安装的版本为目前最新稳定的4.0.6版本,下载地址为http://download.redis.io/releases/ 里面可选的版本很多,根据自己的需求选择就好。下面是脚本内容:
#!/bin/bash
REDIS_VER=4.0.6
TOOLS_DIR=/root/soft/
INSTALL_DIR=/usr/local
# Check if user is root
if [ $(id -u) != "0" ]; then
echo "Error: You must be root to run this script"
exit 1
fi
# Check network environmental
NET_NUM=`ping -c 4 www.baidu.com |awk '/packet loss/{print $6}' |sed -e 's/%//'`
#NET_NUM=`ping -c 4 www.baidu.com |awk '/packet loss/{print $6}'`
if [ -z "$NET_NUM" ] || [ $NET_NUM -ge 10 ];then
echo "Please check your internet"
exit 1
fi
[ ! -d $TOOLS_DIR ] && mkdir -pv $TOOLS_DIR
cd $TOOLS_DIR
if [ ! -f redis-${REDIS_VER}.tar.gz ]; then
wget http://download.redis.io/releases/redis-${REDIS_VER}.tar.gz
fi
tar xf redis-${REDIS_VER}.tar.gz -C $INSTALL_DIR
cd $INSTALL_DIR
[ ! -e $INSTALL_DIR/redis ] && ln -sv $INSTALL_DIR/redis-${REDIS_VER} $INSTALL_DIR/redis
#Compile redis
cd $INSTALL_DIR/redis
make
make PREFIX=/usr/local/redis install
[ ! -d etc ] && mkdir etc
\cp -f redis.conf etc/
sed -i 's#daemonize no#daemonize yes#g' etc/redis.conf
#Start redis-server
${INSTALL_DIR}/redis/bin/redis-server ${INSTALL_DIR}/redis/etc/redis.conf
#auto start
if [ `grep redis-server /etc/rc.d/rc.local | wc -l` -eq 0 ]; then
echo "${INSTALL_DIR}/redis/bin/redis-server ${INSTALL_DIR}/redis/etc/redis.conf &>/dev/null" >> /etc/rc.d/rc.local
fi
在此复习下shell中的某些知识:
[ -a FILE ] 如果 FILE 存在则为真。
[ -b FILE ] 如果 FILE 存在且是一个块特殊文件则为真。
[ -c FILE ] 如果 FILE 存在且是一个字特殊文件则为真。
[ -d FILE ] 如果 FILE 存在且是一个目录则为真。
[ -e FILE ] 如果 FILE 存在则为真。
[ -f FILE ] 如果 FILE 存在且是一个普通文件则为真。
[ -g FILE ] 如果 FILE 存在且已经设置了SGID则为真。
[ -h FILE ] 如果 FILE 存在且是一个符号连接则为真。
[ -k FILE ] 如果 FILE 存在且已经设置了粘制位则为真。
[ -p FILE ] 如果 FILE 存在且是一个名字管道(F如果O)则为真。
[ -r FILE ] 如果 FILE 存在且是可读的则为真。
[ -s FILE ] 如果 FILE 存在且大小不为0则为真。
[ -t FD ] 如果文件描述符 FD 打开且指向一个终端则为真。
[ -u FILE ] 如果 FILE 存在且设置了SUID (set user ID)则为真。
[ -w FILE ] 如果 FILE 如果 FILE 存在且是可写的则为真。
[ -x FILE ] 如果 FILE 存在且是可执行的则为真。
[ -O FILE ] 如果 FILE 存在且属有效用户ID则为真。
[ -G FILE ] 如果 FILE 存在且属有效用户组则为真。
[ -L FILE ] 如果 FILE 存在且是一个符号连接则为真。
[ -N FILE ] 如果 FILE 存在 and has been mod如果ied since it was last read则为真。
[ -S FILE ] 如果 FILE 存在且是一个套接字则为真。
参考资料: http://blog.csdn.net/aaaaatiger/article/details/1713611