常用shell脚本备忘录

一、springboot服务启停脚本

文件名 service.sh

#!/bin/bash
#服务所在目录
HOME=/dev/springboot
AppName=$1
FuncName=$2

usage() {
  echo "Usage: ./service.sh [serviceName.jar] [start|stop|restart|status]"
  exit 1
}
#如果传入的参数个数不等于2的话,就调用usage函数,并退出脚本
[[ $# != 2 ]] && usage && exit 1
#如果传入的$1,$2,$3三个参数的值为空,那么就调用usage函数,并退出脚本
[[ -z $1 || -z $2 ]] && usage && exit 1

#if [ "$AppName" = "" ];
#then
#    echo -e "\033[0;31m 未输入应用名 \033[0m"
#    exit 1
#fi

#if [ "$FuncName" = "" ];
#then
#    echo -e "\033[0;31m 未输入操作名 \033[0m  \033[0;34m {start|stop|restart|status} \033[0m"
#    exit 1
#fi

start(){
	PID=`ps -ef |grep java|grep $AppName|grep -v grep|awk '{print $2}'`
	if [ x"$PID" != x"" ]; then
	    echo "$AppName is running..."
	else
		#nohup java $JVM_OPTS -jar $1 > /dev/null 2>&1 &
	cd $HOME
	nohup java -jar "$AppName" > /dev/null 2>&1 &
	echo "Start $AppName success..."
	fi
}

stop(){
	echo "Stop $AppName ..."
	PID=""
	query(){
		PID=`ps -ef |grep java|grep $AppName|grep -v grep|awk '{print $2}'`
	}
	query
	if [ x"$PID" != x"" ]; then
		kill -TERM $PID
		echo "$1 (pid:$PID) exiting..."
		while [ x"$PID" != x"" ]
		do
			sleep 2
			query
		done
		echo "$AppName exited."
	else
		echo "$AppName already stopped."
	fi
}

restart(){
    echo "restart service $AppName"
    stop
    sleep 2
    start
}

status(){
   PID=`ps -ef |grep java|grep $AppName|grep -v grep|wc -l`
   echo "ps -ef |grep java|grep "$AppName"|grep -v grep|wc -l"
   echo "PID="$PID
    if [ $PID != 0 ];then
        echo "$AppName is running..."
    else
        echo "$AppName is not running..."
    fi
}

case $2 in
   start)
    start;;
   stop)
    stop;;
   restart)
    restart;;
   status)
    status;;
    *)
esac

使用说明

以服务 eureka.jar 为例:

  • 查询服务 ./service.sh eureka.jar status
  • 启动服务 ./service.sh eureka.jar start
  • 停止服务 ./service.sh eureka.jar stop
  • 重启服务 ./service.sh eureka.jar restart

多个服务启停脚本 cloud.sh

#!/bin/bash
#服务所在目录
HOME=/dev/springcloud
FuncName=$1
NameArray=("eureka" "zuul" "system")
NumArray=(0 1 2)

usage() {
  echo "Usage: ./cloud.sh [start|stop|restart|status]"
  exit 1
}
if [ "$FuncName" = "" ]
then
    echo -e "未输入方法名 [start|stop|restart|status]"
    usage
fi

start(){
	for var in ${NumArray[@]}
	do
		PID=`ps -ef |grep java|grep ${NameArray[$var]}.jar | grep -v grep|awk '{print $2}'`
		if [ x"$PID" != x"" ]; then
		    echo "${NameArray[$var]} is running..."
		else
			echo "Start ${NameArray[$var]} ..."
			cd $HOME
			#nohup java $JVM_OPTS -jar $1 > ${NameArray[$var]}.log 2>&1 &
			nohup java -jar "${NameArray[$var]}.jar" > /dev/null 2>&1 &
			echo "Start ${NameArray[$var]} success..."
		fi
	done
}

stop(){
	for var in ${NumArray[@]}
	do
		PID=""
		query(){
			PID=`ps -ef |grep java|grep ${NameArray[$var]}.jar | grep -v grep|awk '{print $2}'`
		}
		query
		if [ x"$PID" != x"" ]; then
			echo "Stop ${NameArray[$var]} ..."
			kill -TERM $PID
			echo "$1 (pid:$PID) exiting..."
			while [ x"$PID" != x"" ]
			do
				sleep 2
				query
			done
			echo "${NameArray[$var]} exited."
		else
			echo "${NameArray[$var]} already stopped."
		fi
	done
}

restart(){
	echo "restart service"
    stop
    sleep 3
    start
}

status(){
	for var in ${NumArray[@]}
	do
		PID=`ps -ef |grep java|grep ${NameArray[$var]}.jar | grep -v grep|wc -l`
	    if [ $PID != 0 ];then
	        echo "${NameArray[$var]} is running..."
	    else
	        echo "${NameArray[$var]} is not running..."
	    fi
	done
}

case $1 in
   start)
    start;;
   stop)
    stop;;
   restart)
    restart;;
   status)
    status;;
    *)
esac

二、mysql数据库备份脚本

文件名 data_back.sh

#!/bin/bash
# JOBDATE=`date +%Y%m%d_%H%M%S`
JOBDATE=`date +%Y%m%d`
WORKPATH=/opt/data
LOGPATH=$WORKPATH/log
FILE_PATH=$WORKPATH/data_bk

DB_IP=your ip
DB_DATABASE=your database
DB_USER=your user
DB_PASSWORD=your password

if [ ! -d "$FILE_PATH" ]
	then
	mkdir -p $FILE_PATH
fi

export(){
	cd $FILE_PATH
	echo -e $DB_DATABASE"数据库备份开始......" `date +'%Y-%m-%d %H:%M:%S'` | tee -a $LOGPATH/JOB_$JOBDATE.log
	mysqldump -u$DB_USER -p$DB_PASSWORD -h$DB_IP $DB_DATABASE >$FILE_PATH/"$DB_DATABASE"_$JOBDATE.sql 
	K_RET=$?
	if [ $K_RET -ne 0 ]
	   then
	   echo -e "$DB_DATABASE数据库备份失败......" `date +'%Y-%m-%d %H:%M:%S'` | tee -a $LOGPATH/JOB_$JOBDATE.log
	   exit 1
	fi
	gzip $FILE_PATH/"$DB_DATABASE"_$JOBDATE.sql
	tar -cvf "$DB_DATABASE"_$JOBDATE.tar "$DB_DATABASE"_$JOBDATE.sql.gz 
	rm -f $FILE_PATH/"$DB_DATABASE"_$JOBDATE.sql.gz
	K_RET=$?
	if [ $K_RET -ne 0 ]
	  then
	  echo -e "$DB_DATABASE数据库备份失败......" `date +'%Y-%m-%d %H:%M:%S'` | tee -a $LOGPATH/JOB_$JOBDATE.log
	exit 1
	fi
}

delete(){
	echo '开始删除30天前的备份...'
	find $FILE_PATH -type f -mtime +30 | xargs rm -f
	echo '删除备份成功'
}

export
echo -e "数据库备份结束......"`date +'%Y-%m-%d %H:%M:%S'` | tee -a $LOGPATH/JOB_$JOBDATE.log

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值