app.sh
#!/bin/sh
## java env
export JAVA_HOME=/opt/jdk1.8.0
SERVICE_NAME=servicename
JAR_NAME=$SERVICE_NAME-pkgvernum-RELEASE.jar
#PID 代表是PID文件
PID=/home/zhangyanfeng/microsvr/$SERVICE_NAME/$SERVICE_NAME.pid
#使用说明,用来提示输入参数
usage() {
echo "Usage: sh app.sh [start|stop|restart|status]"
exit 1
}
#检查程序是否在运行
is_exist(){
pid=`ps -ef|grep $JAR_NAME|grep -v grep|awk '{print $2}' `
#如果不存在返回1,存在返回0
if [ -z "${pid}" ]; then
return 1
else
return 0
fi
}
#启动方法
start(){
is_exist
if [ $? -eq "0" ]; then
echo ">>> ${SERVICE_NAME} is already running PID=${pid} <<<"
else
nohup $JAVA_HOME/bin/java -Xms256m -Xmx512m -Djava.security.auth.login.config=./config/kafka_zoo_server_jaas.properties -jar $JAR_NAME >/dev/null 2>&1 &
echo $! > $PID
echo ">>> start $SERVICE_NAME successed PID=$! <<<"
fi
}
#停止方法
stop(){
#is_exist
pidf=$(cat $PID)
#echo "$pidf"
echo ">>> ${SERVICE_NAME} PID = $pidf begin kill $pidf <<<"
kill $pidf
rm -rf $PID
sleep 2
is_exist
if [ $? -eq "0" ]; then
echo ">>> ${SERVICE_NAME} 2 PID = $pid begin kill -9 $pid <<<"
kill -9 $pid
sleep 2
echo ">>> $SERVICE_NAME process stopped <<<"
else
echo ">>> ${SERVICE_NAME} is not running <<<"
fi
}
#输出运行状态
status(){
is_exist
if [ $? -eq "0" ]; then
echo ">>> ${SERVICE_NAME} is running PID is ${pid} <<<"
else
echo ">>> ${SERVICE_NAME} is not running <<<"
fi
}
#重启
restart(){
stop
start
}
cd /home/zhangyanfeng/microsvr/$SERVICE_NAME/
#根据输入参数,选择执行对应方法,不输入则执行使用说明
case "$1" in
"start")
start
;;
"stop")
stop
;;
"status")
status
;;
"restart")
restart
;;
*)
usage
;;
esac
exit 0
start.sh
#!/bin/sh
cd /home/
find ./ -maxdepth 1 -name "start*.log" -mtime +7 -exec rm {} \;
TODAY=`date +"%Y%m%d"`
getTimeStamp()
{
echo `date +"%Y-%m-%d %H:%M:%S"`
}
log()
{
echo " $1"
echo "`getTimeStamp` : $1" >> /home/start-${TODAY}.log
}
MICRODIR=/home/zhangyanfeng/microsvr/zyf-service-user
CONFIGDIR=${MICRODIR}/config
TEMPLDIR=/etc/confd/templates
NOWTIME=`date +"%Y%m%d%H%M%S"`
init_confd()
{
log "init confd ..."
if [ ! -f ${TEMPLDIR}/application.tmpl ]
then
log "cp -af ${CONFIGDIR}/application.properties ${TEMPLDIR}/application.tmpl"
cp -af ${CONFIGDIR}/application.properties ${TEMPLDIR}/application.tmpl
else
log "${TEMPLDIR}/application.tmpl is exist, ignore."
fi
if [ ! -f ${TEMPLDIR}/bootstrap.tmpl ]
then
log "cp -af ${CONFIGDIR}/bootstrap.properties ${TEMPLDIR}/bootstrap.tmpl"
cp -af ${CONFIGDIR}/bootstrap.properties ${TEMPLDIR}/bootstrap.tmpl
else
log "${TEMPLDIR}/bootstrap.tmpl is exist, ignore."
fi
chmod 755 -R ${TEMPLDIR}
}
common_softlink()
{
targetdir=$1
sourcedir=$2
if [ ! -d ${targetdir} ]
then
mkdir -p ${targetdir}
log "mkdir -p ${targetdir}"
fi
if [ -L ${sourcedir} ]
then
log "rm ${sourcedir}"
rm ${sourcedir}
fi
if [ -d ${sourcedir} ]
then
log "mv -f ${sourcedir} ${sourcedir}_${NOWTIME}"
mv -f ${sourcedir} ${sourcedir}_${NOWTIME}
fi
ln -s ${targetdir} ${sourcedir}
chmod 755 ${sourcedir}
chown zxin10:root ${sourcedir}
chmod -R 755 ${targetdir}
chown -R zxin10:root ${targetdir}
}
init_softlink()
{
UNAME=`uname -a`
MICRONAME1=`echo $UNAME | cut -d ' ' -f 2`
MICRONAME2=`echo $MICRONAME1 | cut -d '-' -f 1-3`
log_dir=/home/log/$MICRONAME2/$MICRONAME1
common_softlink "${log_dir}" "/home/zhangyanfeng/microsvr/zyf-service-user/logs"
}
start_confd()
{
log "start confd..."
CONFDPID= `ps -ef|grep "confd"|grep -v grep|awk '{print $2}'`
if [ -n "${CONFDPID}" ]
then
log "stop confd"
kill -9 ${CONFDPID}
sleep 3
fi
ETCDCONFPATH="/home/zhangyanfeng/confdconfig/confd-general-config.conf"
ETCD_SERVER_IP=`grep ETCD_SERVER_HOSTIP ${ETCDCONFPATH} | awk -F '=' '{print $2}'`
ETCD_SERVER_PORT=`grep ETCD_SERVER_PORT ${ETCDCONFPATH} | awk -F '=' '{print $2}'`
CONFD_SERVER=${ETCD_SERVER_IP}":"${ETCD_SERVER_PORT}
log "/usr/bin/confd -interval 60 -backend etcd -node http://${CONFD_SERVER} &"
/usr/bin/confd -interval 60 -backend etcd -node http://${CONFD_SERVER} &
}
function getConfigValue
{
[ $# -ne 2 ] && echo "function getConfigValue arguments error"
local fileName=$1
local key=$2
echo `cat ${fileName}| grep "${key}"| grep "=" | awk -F= '{print $2}' | tr -d " "`
}
function writeConfigValue()
{
K8SCONFIGDIR=/home/zhangyanfeng/confdconfig
K8SCONFIGFILE=${K8SCONFIGDIR}/confd-general-config.conf
DBMASTURL=`getConfigValue ${K8SCONFIGFILE} pgconn | awk -F ',' '{print $1}'`
DBSLAVEURL=`getConfigValue ${K8SCONFIGFILE} pgconn | awk -F ',' '{print $2}'`
REDISURL=`getConfigValue ${K8SCONFIGFILE} redisconn`
KAFKAURL=`getConfigValue ${K8SCONFIGFILE} kafkaconn`
ZOOKEEPURL=`getConfigValue ${K8SCONFIGFILE} zkconn`
IPSEGEMENT=`getConfigValue ${K8SCONFIGFILE} innernetworksegement`
LIANCHUANGURL=`getConfigValue ${K8SCONFIGFILE} lianchuang_url`
if [ -f ${CONFIGDIR}/application.properties ]
then
if [ -n ${IPSEGEMENT} ]
then
sed -i -e "/^genid/s/\/[0-9]\{1,3\}.[0-9]\{1,3\}.[0-9]./\/${IPSEGEMENT}./g" ${CONFIGDIR}/application.properties
fi
if [ -n ${ZOOKEEPURL} ]
then
sed -i -e "/^spring.cloud.stream.kafka.binder.zk-nodes/s/spring.cloud.stream.kafka.binder.zk-nodes=.*/spring.cloud.stream.kafka.binder.zk-nodes=${ZOOKEEPURL}/" ${CONFIGDIR}/application.properties
fi
if [ -n ${KAFKAURL} ]
then
sed -i -e "/^kafka.binder.brokers/s/kafka.binder.brokers=.*/kafka.binder.brokers=${KAFKAURL}/" ${CONFIGDIR}/application.properties
sed -i -e "/^spring.cloud.stream.kafka.binder.brokers/s/spring.cloud.stream.kafka.binder.brokers=.*/spring.cloud.stream.kafka.binder.brokers=${KAFKAURL}/" ${CONFIGDIR}/application.properties
fi
if [ -n ${LIANCHUANGURL} ]
then
BRFOREVALUE=`getConfigValue ${CONFIGDIR}/application.properties lianchuang.url`
BRFORE=${BRFOREVALUE#*//}
sed -i "s/${BRFORE}/${LIANCHUANGURL}/g" ${CONFIGDIR}/application.properties
fi
fi
if [ -f ${CONFIGDIR}/bootstrap.properties ]
then
if [ -n ${IPSEGEMENT} ]
then
sed -i -e "/^eureka.client.serviceUrl.defaultZone/s/\/[0-9]\{1,3\}.[0-9]\{1,3\}.[0-9]./\/${IPSEGEMENT}./g" ${CONFIGDIR}/bootstrap.properties
fi
fi
}
============== MAIN FUNCTION ===============
init_softlink
#init_confd
#start_confd
writeConfigValue
cd ${MICRODIR}
log "${MICRODIR}/app.sh restart"
${MICRODIR}/app.sh restart
export TERM=linux
/usr/sbin/sshd -D