- 以Redis为例
1.安装好后,进入Redis目录
cd /home/apps/redis/redis-5.0.7/src
2.创建三个执行文件
- 创建重启进程的
restart.sh
文件,加文件可执行
chmod +x restart.sh
base_path=/home/apps/redis/redis-5.0.7/src
cd $base_path
#redis.pid是一个用于记录进程Pid的文件
flag=start
if [ -f redis.pid ]; then
#获取进程Pid,会把pid值提取出来到变量REDIS_PID中
source redis.pid
#停止这个进程
kill -9 ${REDIS_PID}
flag=restart
fi
#执行启动操作,输出日志到log.txt文件,最后的&表示在后台继续执行这个进程
./redis-server ../redis.conf >log.txt 2>&1 &
#获取到上述这个进程的Pid到变量pid
pid=$!
#将 REDIS_PID=xxx 内容写入到redis.pid文件中
echo REDIS_PID=${pid} > redis.pid
echo "$flag redis service success [$pid]."
- 创建查看进程状态的
showstate.sh
文件,加文件可执行
chmod +x showstate.sh
base_path=/home/apps/redis/redis-5.0.7/src
cd $base_path
#查询网络端口中redis进程的数量
count=`netstat -tunlp|grep redis`
#如果进程数量大于1,说明进程运行中
if [ ${#count} -gt 1 ]; then
#打印到控制台有关redis的进程信息
netstat -tunlp|grep redis
echo "redis service is running."
else
echo "redis service is stopped"
fi
- 创建停止进程的
shutdown.sh
文件,加文件可执行
chmod +x shutdown.sh
base_path=/home/apps/redis/redis-5.0.7/src
cd $base_path
#判断redis.pid文件是否存在
if [ -f redis.pid ]; then
source redis.pid
#停止进程
kill -9 ${REDIS_PID}
rm redis.pid
echo "stop redis service success."
else
echo "redis service is stopped."
fi
3.在Jenkins上创建三个任务
- 创建重启进程的
redis - restart
任务
#!/bin/bash
BASE_PATH=/home/apps/redis
APP_NAME=redis-5.0.7
#Jenkins防杀前置处理
OLD_BUILD_ID=$BUILD_ID
echo $OLD_BUILD_ID
export BUILD_ID=dontKillMe
#开始执行********
$BASE_PATH/$APP_NAME/src/restart.sh
#完成执行********
#Jenkins防杀后置处理
export BUILD_ID=$OLD_BUILD_ID
创建好后是这样的[构建-执行shell]:
- 创建查看进程状态的
redis - status
任务
#!/bin/bash
BASE_PATH=/home/apps/redis
APP_NAME=redis-5.0.7
#开始执行********
$BASE_PATH/$APP_NAME/src/showstate.sh
#完成执行********
创建好后是这样的[构建-执行shell]:
- 创建停止进程的
redis - stop
任务
#!/bin/bash
BASE_PATH=/home/apps/redis
APP_NAME=redis-5.0.7
#开始执行********
$BASE_PATH/$APP_NAME/src/shutdown.sh
#完成执行********
4.构建后的效果
- 构建重启任务
- 构建查看状态任务
- 构建停止的任务
5.其他说明
完成,也许牛批的大佬会直接写在Jenkins构建配置里面…