linux一键启动和停止多个端口服务脚本:springboot项目打jar包指定多个端口

简介: linux一键启动和停止多个端口服务脚本:springboot项目打jar包指定多个端口

场景描述:

springboot项目,有多个yml文件,每个yml文件配置了不同的服务端口

要求:

将springboot打成jar包之后,可以通过脚本命令启动多个服务端口

启动脚本编写

#!/bin/sh
DB2PIDFILE=db2.pid
ORAPIDFILE=ora.pid
PAASPIDFILE=paas.pid
MYSQLPIDFILE=mysql.pid
if [ -f "$DB2PIDFILE" ] && kill -0 $(cat "$DB2PIDFILE"); then
  echo "xxl-job-admin-db2 is already running!"
  exit 1
fi
if [ -f "$ORAPIDFILE" ] && kill -0 $(cat "$ORAPIDFILE"); then
  echo "xxl-job-admin-ora is already running!"
  exit 1
fi
if [ -f "$PAASPIDFILE" ] && kill -0 $(cat "$PAASPIDFILE"); then
  echo "xxl-job-admin-paas is already running!"
  exit 1
fi
if [ -f "$MYSQLPIDFILE" ] && kill -0 $(cat "$MYSQLPIDFILE"); then
  echo "xxl-job-admin-mysql is already running!"
  exit 1
fi
rm -f *.log
nohup java -jar hijob-jdbc-2.3.0.jar --spring.profiles.active=db2 > ./db2.log 2>&1 &
echo $! > $DB2PIDFILE
sleep 5
nohup java -jar hijob-jdbc-2.3.0.jar --spring.profiles.active=oracle > ./oracle.log 2>&1 &
echo $! > $ORAPIDFILE
sleep 5
nohup java -jar hijob-jdbc-2.3.0.jar --spring.profiles.active=paas > ./paas.log 2>&1 &
echo $! > $PAASPIDFILE
sleep 5
nohup java -jar hijob-jdbc-2.3.0.jar --spring.profiles.active=mysql > ./mysql.log 2>&1 &
echo $! > $MYSQLPIDFILE
echo "start succeed!"

启动之后的效果如下:我们看到有五个进程,表示每个yml文件的服务端口都起好了

[root@dbaa-kafka hijob-jdbc]# ll
total 52340
-rw-r--r--. 1 root root   162991 Apr 10 15:16 db2.log
-rw-r--r--. 1 root root        5 Apr 10 14:36 db2.pid
-rw-r--r--. 1 root root 53017534 Apr  7 10:27 hijob-jdbc-2.3.0.jar
-rw-r--r--. 1 root root     7794 Apr 10 14:37 mysql.log
-rw-r--r--. 1 root root        5 Apr 10 14:36 mysql.pid
-rw-r--r--. 1 root root   148349 Apr 10 15:17 oracle.log
-rw-r--r--. 1 root root        5 Apr 10 14:36 ora.pid
-rw-r--r--. 1 root root    85162 Apr 10 15:17 paas.log
-rw-r--r--. 1 root root        5 Apr 10 14:36 paas.pid
-rw-r--r--. 1 root root     1093 Apr  7 10:27 start.sh
-rw-r--r--. 1 root root     1119 Apr  7 10:27 stop.sh
[root@dbaa-kafka hijob-jdbc]# ps -ef|grep hijob-jdbc-2.3.0.jar 
root      2027     1  1 14:36 pts/3    00:00:38 java -jar hijob-jdbc-2.3.0.jar --spring.profiles.active=db2
root      2124     1  1 14:36 pts/3    00:00:41 java -jar hijob-jdbc-2.3.0.jar --spring.profiles.active=oracle
root      2227     1  1 14:36 pts/3    00:00:31 java -jar hijob-jdbc-2.3.0.jar --spring.profiles.active=paas
root      2339     1  1 14:36 pts/3    00:00:29 java -jar hijob-jdbc-2.3.0.jar --spring.profiles.active=mysql
root      4257  1196  0 15:17 pts/3    00:00:00 grep --color=auto hijob-jdbc-2.3.0.jar
[root@dbaa-kafka hijob-jdbc]# 

当然也少不了停止脚本,脚本内容如下:

#!/bin/sh
DB2PIDFILE=db2.pid
echo "db2 pid file is $DB2PIDFILE"
ORAPIDFILE=ora.pid
echo "ora pid file is $ORAPIDFILE"
PAASPIDFILE=paas.pid
echo "paas pid file is $PAASPIDFILE"
MYSQLPIDFILE=mysql.pid
echo "mysql pid file is $MYSQLPIDFILE"
if [ ! -f "$DB2PIDFILE" ] || ! kill -0 "$(cat "$DB2PIDFILE")"; then
  echo "process not running..."
else
  echo "stopping process..."
  DB2PID="$(cat "$DB2PIDFILE")"
  kill -9 $DB2PID
  rm -f "$DB2PIDFILE"
fi
if [ ! -f "$ORAPIDFILE" ] || ! kill -0 "$(cat "$ORAPIDFILE")"; then
  echo "process not running..."
else
  echo "stopping process..."
  ORAPID="$(cat "$ORAPIDFILE")"
  kill -9 $ORAPID
  rm -f "$ORAPIDFILE"
fi
if [ ! -f "$PAASPIDFILE" ] || ! kill -0 "$(cat "$PAASPIDFILE")"; then
  echo "process not running..."
else
  echo "stopping process..."
  PAASPID="$(cat "$PAASPIDFILE")"
  kill -9 $PAASPID
  rm -f "$PAASPIDFILE"
fi
if [ ! -f "$MYSQLPIDFILE" ] || ! kill -0 "$(cat "$MYSQLPIDFILE")"; then
  echo "process not running..."
else
  echo "stopping process..."
  MYSQLPID="$(cat "$MYSQLPIDFILE")"
  kill -9 $MYSQLPID
  rm -f "$MYSQLPIDFILE"
fi
echo "stop succeed!"


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
Ubuntu Linux 网络安全
Linux系统初始化脚本
一款支持Rocky、CentOS、Ubuntu、Debian、openEuler等主流Linux发行版的系统初始化Shell脚本,涵盖网络配置、主机名设置、镜像源更换、安全加固等多项功能,适配单/双网卡环境,支持UEFI引导,提供多版本下载与持续更新。
978 3
Linux系统初始化脚本
|
10月前
|
存储 安全 Unix
七、Linux Shell 与脚本基础
别再一遍遍地敲重复的命令了,把它们写进Shell脚本,就能一键搞定。脚本本质上就是个存着一堆命令的文本文件,但要让它“活”起来,有几个关键点:文件开头最好用#!/usr/bin/env bash来指定解释器,并用chmod +x给它执行权限。执行时也有讲究:./script.sh是在一个新“房间”(子Shell)里跑,不影响你;而source script.sh是在当前“房间”里跑,适合用来加载环境变量和配置文件。
886 9
|
10月前
|
存储 Shell Linux
八、Linux Shell 脚本:变量与字符串
Shell脚本里的变量就像一个个贴着标签的“箱子”。装东西(赋值)时,=两边千万不能有空格。用单引号''装进去的东西会原封不动,用双引号""则会让里面的$变量先“变身”再装箱。默认箱子只能在当前“房间”(Shell进程)用,想让隔壁房间(子进程)也能看到,就得给箱子盖个export的“出口”戳。此外,Shell还自带了$?(上条命令的成绩单)和$1(别人递进来的第一个包裹)等许多特殊箱子,非常有用。
958 2
|
Web App开发 缓存 安全
Linux一键清理系统垃圾:释放30GB空间的Shell脚本实战​
这篇博客介绍了一个实用的Linux系统盘清理脚本,主要功能包括: 安全权限检查和旧内核清理,保留当前使用内核 7天以上日志文件清理和系统日志压缩 浏览器缓存(Chrome/Firefox)、APT缓存、临时文件清理 智能清理Snap旧版本和Docker无用数据 提供磁盘空间使用前后对比和大文件查找功能 脚本采用交互式设计确保安全性,适合定期维护开发环境、服务器和个人电脑。文章详细解析了脚本的关键功能代码,并给出了使用建议。完整脚本已开源,用户可根据需求自定义调整清理策略。
1290 1
|
监控 网络协议 Linux
Linux - 如何查看某个端口是否被占用?
Linux - 如何查看某个端口是否被占用?
1041 0
Linux - 如何查看某个端口是否被占用?
|
监控 网络协议 Linux
linux 查看端口占用
本文介绍一下linux查看端口占用基本命令:
linux 查看端口占用
|
Linux
Linux中查看某个端口是否被占用
一、使用lsof 用法: lsof -i:port # 例:lsof -i:8080 备注:当前用户需要拥有lsof命令的权限 二、使用netstat netstat -anp | grep port # 例:netstat -anp | gre...
1320 0
|
Linux 网络协议 Ubuntu
linux 查看端口占用情况
开发过程中,经常遇到“xx端口被占用”的报错信息,一种解决方法就是kill掉占用端口的进程。那么问题来了,如何知道哪个进程占用了该端口呢? 1. lsof (推荐) lsof(list open files)是一个查看当前系统文件的工具。
3284 0
|
Linux 网络协议 应用服务中间件
|
Linux 数据安全/隐私保护 网络协议
LINUX最好用查看端口占用并杀死(kill)的方式
题记: 根据指定端口查看 wd@wd:~/workspace/cat$ sudo netstat -tlnp|grep 6379 [sudo] wd 的密码: tcp 0 0 0.
2527 0