linux 批量重启机器脚本,(Linux) 一键批量启动、停止、重启Jar包Shell脚本

2023-05-16

废话不多说,直接上脚本,我这里是以spring cloud项目做的示例。

#!/bin/sh

export EUREKA=family-eureka-1.0.0.jar

export GATEWAY=family-gateway-1.0.0.jar

export AUTH=family-auth-1.0.0.jar

export SYSTEM=family-system-1.0.0.jar

export FINANCE=familyFinance-1.0.0.jar

export BABY=familyBaby-1.0.0.jar

export HOME=familyHome-1.0.0.jar

export LOG=familyLog-1.0.0.jar

export EUREKA_port=8761

export GATEWAY_port=8762

export AUTH_port=8763

export SYSTEM_port=8764

export FINANCE_port=8765

export BABY_port=8766

export HOME_port=8767

export LOG_port=8768

case "$1" in

start)

## 启动EUREKA

echo "--------eureka 开始启动--------------"

nohup java -jar $EUREKA >/data/project/family/log/family-eureka.out &

EUREKA_pid=`lsof -i:$EUREKA_port|grep "LISTEN"|awk '{print $2}'`

until [ -n "$EUREKA_pid" ]

do

EUREKA_pid=`lsof -i:$EUREKA_port|grep "LISTEN"|awk '{print $2}'`

done

echo "EUREKA pid is $EUREKA_pid"

echo "--------eureka 启动成功--------------"

## 启动GATEWAY

echo "--------开始启动GATEWAY---------------"

nohup java -jar $GATEWAY >/data/project/family/log/family-gateway.out &

GATEWAY_pid=`lsof -i:$GATEWAY_port|grep "LISTEN"|awk '{print $2}'`

until [ -n "$GATEWAY_pid" ]

do

GATEWAY_pid=`lsof -i:$GATEWAY_port|grep "LISTEN"|awk '{print $2}'`

done

echo "GATEWAY pid is $GATEWAY_pid"

echo "---------GATEWAY 启动成功-----------"

## 启动AUTH

echo "--------开始启动AUTH---------------"

nohup java -jar $AUTH >/data/project/family/log/family-auth.out &

AUTH_pid=`lsof -i:$AUTH_port|grep "LISTEN"|awk '{print $2}'`

until [ -n "$AUTH_pid" ]

do

AUTH_pid=`lsof -i:$AUTH_port|grep "LISTEN"|awk '{print $2}'`

done

echo "AUTH pid is $AUTH_pid"

echo "---------AUTH 启动成功-----------"

## 启动SYSTEM

echo "--------开始启动 SYSTEM---------------"

nohup java -jar $SYSTEM >/data/project/family/log/family-system.out &

SYSTEM_pid=`lsof -i:$SYSTEM_port|grep "LISTEN"|awk '{print $2}'`

until [ -n "$SYSTEM_pid" ]

do

SYSTEM_pid=`lsof -i:$SYSTEM_port|grep "LISTEN"|awk '{print $2}'`

done

echo "SYSTEM pid is $SYSTEM_pid"

echo "---------SYSTEM 启动成功-----------"

## 启动FINANCE

echo "--------开始启动 FINANCE---------------"

nohup java -jar $FINANCE >/data/project/family/log/family-finance.out &

FINANCE_pid=`lsof -i:$FINANCE_port|grep "LISTEN"|awk '{print $2}'`

until [ -n "$FINANCE_pid" ]

do

FINANCE_pid=`lsof -i:$FINANCE_port|grep "LISTEN"|awk '{print $2}'`

done

echo "FINANCE pid is $FINANCE_pid"

echo "---------FINANCE 启动成功-----------"

## 启动BABY

echo "--------开始启动 BABY---------------"

nohup java -jar $BABY >/data/project/family/log/family-baby.out &

BABY_pid=`lsof -i:$BABY_port|grep "LISTEN"|awk '{print $2}'`

until [ -n "$BABY_pid" ]

do

BABY_pid=`lsof -i:$BABY_port|grep "LISTEN"|awk '{print $2}'`

done

echo "BABY pid is $BABY_pid"

echo "---------BABY 启动成功-----------"

## 启动HOME

echo "--------开始启动 HOME---------------"

nohup java -jar $HOME >/data/project/family/log/family-home.out &

HOME_pid=`lsof -i:$HOME_port|grep "LISTEN"|awk '{print $2}'`

until [ -n "$HOME_pid" ]

do

HOME_pid=`lsof -i:$HOME_port|grep "LISTEN"|awk '{print $2}'`

done

echo "HOME pid is $HOME_pid"

echo "---------HOME 启动成功-----------"

## 启动LOG

echo "--------开始启动 LOG---------------"

nohup java -jar $LOG >/data/project/family/log/family-log.out &

LOG_pid=`lsof -i:$LOG_port|grep "LISTEN"|awk '{print $2}'`

until [ -n "$LOG_pid" ]

do

LOG_pid=`lsof -i:$LOG_port|grep "LISTEN"|awk '{print $2}'`

done

echo "LOG pid is $LOG_pid"

echo "---------LOG 启动成功-----------"

echo "===startAll success==="

;;

stop)

P_ID=`ps -ef | grep -w $EUREKA | grep -v "grep" | awk '{print $2}'`

if [ "$P_ID" == "" ]; then

echo "===EUREKA process not exists or stop success"

else

kill -9 $P_ID

echo "EUREKA killed success"

fi

P_ID=`ps -ef | grep -w $GATEWAY | grep -v "grep" | awk '{print $2}'`

if [ "$P_ID" == "" ]; then

echo "===GATEWAY process not exists or stop success"

else

kill -9 $P_ID

echo "GATEWAY killed success"

fi

P_ID=`ps -ef | grep -w $AUTH | grep -v "grep" | awk '{print $2}'`

if [ "$P_ID" == "" ]; then

echo "===AUTH process not exists or stop success"

else

kill -9 $P_ID

echo "AUTH killed success"

fi

P_ID=`ps -ef | grep -w $SYSTEM | grep -v "grep" | awk '{print $2}'`

if [ "$P_ID" == "" ]; then

echo "===SYSTEM process not exists or stop success"

else

kill -9 $P_ID

echo "SYSTEM killed success"

fi

P_ID=`ps -ef | grep -w $FINANCE | grep -v "grep" | awk '{print $2}'`

if [ "$P_ID" == "" ]; then

echo "===FINANCE process not exists or stop success"

else

kill -9 $P_ID

echo "FINANCE killed success"

fi

P_ID=`ps -ef | grep -w $BABY | grep -v "grep" | awk '{print $2}'`

if [ "$P_ID" == "" ]; then

echo "===BABY process not exists or stop success"

else

kill -9 $P_ID

echo "BABY killed success"

fi

P_ID=`ps -ef | grep -w $HOME | grep -v "grep" | awk '{print $2}'`

if [ "$P_ID" == "" ]; then

echo "===HOME process not exists or stop success"

else

kill -9 $P_ID

echo "HOME killed success"

fi

P_ID=`ps -ef | grep -w $LOG | grep -v "grep" | awk '{print $2}'`

if [ "$P_ID" == "" ]; then

echo "===LOG process not exists or stop success"

else

kill -9 $P_ID

echo "LOG killed success"

fi

echo "===stop success==="

;;

restart)

$0 stop

sleep 2

$0 start

echo "===restart success==="

;;

esac

exit 0

将以上脚本保存到文本,命名为shellTest.sh,内容可根据你的业务需求自行改造。

我这里给一个我在服务器上的文件夹设置。

051df74a588f7c713336ad1a3707615d.png

log是存放输入控制台打印的内容的,如果不想占用磁盘空间,不输入日志,可以修改脚本中的“/data/project/family/log/family-eureka.out” 改成 “/dev/null 2>&1”

这里需要注意一个问题,将shellTest放到服务器上后,别急着启动,需要先做一步解决编码问题,不然启动会报“syntax error near unexpected token `in”

270b1d65592c0719644468609082ce41.png

b90611a50a07943c6f021fa4b87b2a99.png

输入以上命令后,就会生成新的脚本文件family.sh,此时可以去启动family.sh了。

981a800610ca71dda22ef0a8f8dc92f9.png

7c9e66449d7d5109863cac85d044d09e.png

好了,到这里我们可以看到,项目已经全部启动了,并且控制台打印的信息也都输出到我指定的log文件夹中。

补充:操作脚本的命令

启动:sh family.sh strat

停止:sh family.sh stop

重新:sh family.sh restart

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

linux 批量重启机器脚本,(Linux) 一键批量启动、停止、重启Jar包Shell脚本 的相关文章

  • Docker忽略limits.conf(试图解决“打开文件太多”错误)

    我正在运行一个 Web 服务器 该服务器正在处理数千个并发 Web 套接字连接 为了实现这一点 在 Debian linux 我的基本镜像是 google debian wheezy 在 GCE 上运行 上 打开文件的默认数量设置为 100
  • bash while 循环的布尔表达式中的 -lt 意味着什么?

    我猜测它代表小于基于输出 但是我在哪里可以找到有关此语法的文档 bin bash COUNTER 0 while COUNTER lt 10 do echo The counter is COUNTER let COUNTER COUNTE
  • Linux shell 从用户输入中获取设备 ID

    我正在为一个程序编写安装脚本 该程序需要在其配置中使用 lsusb 的设备 ID 因此我正在考虑执行以下操作 usblist lsusb put the list into a array for each line use the arr
  • 如何制作jar文件?

    如何从命令行和 Netbeans 6 7 生成 jar 文件 使用JAR http java sun com docs books tutorial deployment jar basicsindex html命令 jar cf jar
  • 使用 libusb 输出不正确

    我用libusb编写了一个程序 我怀疑输出是否正确 因为所有条目都显示相同的供应商和产品 ID 以下是代码 include
  • 正则表达式删除块注释也删除 * 选择器

    我正在尝试使用 bash 从 css 文件中删除所有块注释 我有以下 sed 命令的正则表达式 sed r s w s w d 这可以很好地去除块注释 例如 This is a comment this is another comment
  • 在汇编中使用 printf 会导致管道传输时输出为空,但可以在终端上使用

    无输出 https stackoverflow com questions 54507957 printf call from assembly do not print to stdout即使在终端上 当输出不包含换行符时也有相同的原因
  • Bash 中所有匹配的^单词^替换^?

    为了澄清 我正在寻找一种方法来执行global搜索并替换先前使用的命令 word replacement 似乎只替换了第一场比赛 有没有一些set我无法选择的选项 尝试这个 echo oneone oneone gs one two Rep
  • 将 JSON 导出到环境变量

    如果我有这样的 JSON hello1 world1 testk testv 我想将每个键值对导出为环境变量 如何通过 shell 脚本来做到这一点 例如 当我在终端上写时 echo hello1 world1应该打印其他键值对吗 注意 上
  • “强制更新快照/版本” - 这是什么意思

    在 Maven 项目中 选择 更新项目 时 有一个名为 强制更新快照 版本 的选项 它有什么作用 强制更新快照 版本 就像运行以下命令 mvn U install U 也可以用作 update snapshot 看here http boo
  • 如何使用 docker ENTRYPOINT 与 shell 脚本文件组合参数

    我编写 shell 脚本文件并将其与 docker ENTRYPOINT 一起使用 但是当我运行 docker image 时 由于入口点代码行 它只是停止而没有任何错误日志 我的 Dockerfile FROM ubuntu 16 04
  • ssh 连接超时

    我无法在 git 中 ssh 到 github bitbucket 或 gitlab 我通常会收到以下错误消息 如何避免它 输出 ssh T email protected cdn cgi l email protection i ssh
  • Tomcat Intellij Idea:远程部署

    RackSpace 云服务器 Ubuntu 12 04 Intellij Idea 11 1 2 Windows 8 Tomcat 7 0 26 JDK 6 在 Intellij Idea 上 当我尝试在远程 Tomcat 7 服务器上运行
  • ioctl 命令的用户权限检查

    我正在实现 char 驱动程序 Linux 并且我的驱动程序中有某些 IOCTL 命令仅需要由 ADMIN 执行 我的问题是如何在 ioctl 命令实现下检查用户权限并限制非特权用户访问 IOCTL 您可以使用bool capable in
  • 找不到包“gdk-pixbuf-2.0”

    我正在尝试在 Amazon Linux 发行版实例上构建 librsvg 我已经通过 yum 安装了大部分依赖项 其中一些在实例上启用的默认 yum 存储库中不可用 因此必须从头开始构建它们 我已经走了很远 但还停留在最后一点 跑步时sud
  • 为什么 Linux 没有 DirectX API?

    在考虑现代显卡的 Windows 系统上 DirectX API 的驱动程序端实现时 我想知道为什么此实现在非 Windows 系统 尤其是 Linux 上不可用 由于明显缺乏此功能 我只能假设有一个我无视的充分理由 但在我的原始理解中 我
  • 如何从 LaTeX 执行 shell 脚本?

    我正在尝试在 LaTeX 中执行以下操作 documentclass article begin document execute usr local bin my shell script sh end document 想法是执行 us
  • 是否有 ADB 命令来检查媒体是否正在播放

    我想使用 ADB 命令检查根植于终端的外部设备中是否正在播放音频 视频 我无法找到任何 ADB 命令 如果有 我尝试过 adb shell dumpsys media player 我想要一个命令来指定视频是否正在运行 您可以使用以下命令查
  • 在 .gitconfig 中隐藏 GitHub 令牌

    我想将所有点文件存储在 GitHub 上 包括 gitconfig 这需要我将 GitHub 令牌隐藏在 gitconfig 中 为此 我有一个 gitconfig hidden token 文件 这是我打算编辑并放在隐藏令牌的 git 下
  • getResourceAsStream() 可以找到 jar 文件之外的文件吗?

    我正在开发一个应用程序 该应用程序使用一个加载配置文件的库 InputStream in getClass getResourceAsStream resource 然后我的应用程序打包在一个 jar文件 如果resource是在里面 ja

随机推荐

  • ctags的使用

    在windows上进行软件开发 xff0c 有很多的IDE可供选择 xff0c 像是source insight vs等 xff0c 非常方便好用 习惯于windows上的软件开发 xff0c 当转到linux上后 xff0c 没有与win
  • firewall

    centos 7中防火墙是一个非常的强大的功能了 xff0c 但对于centos 7中在防火墙中进行了升级了 xff0c 下面我们一起来详细的看看关于centos 7中防火墙使用方法 FirewallD 提供了支持网络 防火墙区域 zone
  • Spring MVC原理及配置

    Spring MVC原理及配置 1 Spring MVC概述 Spring MVC是Spring提供的一个强大而灵活的web框架 借助于注解 xff0c Spring MVC提供了几乎是POJO的开发模式 xff0c 使得控制器的开发和测试
  • vue 复制功能 复制到剪切板

    首先 使用npm安装依赖 npm install save vue clipboard2 然后在main js中注入 复制到剪切板 import VueClipboard from 39 vue clipboard2 39 Vue use
  • git.教程资料

    1 Git使用教程 最详细 xff0c 最傻瓜 xff0c 最浅显 xff0c 真正手把手教 qq 36150631的博客 CSDN博客 html xff08 https blog csdn net qq 36150631 article
  • maven(私库)上传jar包

    在实际开发过程中 xff0c 我们经常会遇到需要引用的jar依赖 xff0c 在我们公司的maven仓库不存在 xff0c 这个时候我们就需要把jar上传上去 xff0c 在项目中添加对应依赖就OK了 步骤1 下载jar 在http mvn
  • [Vue warn]: Duplicate keys detected: '0'. This may cause an update error.

    1 Vue warn Duplicate keys detected 39 0 39 This may cause an update error 第一眼看到这个错误一脸懵逼 xff0c 项目使用很久了 xff0c 代码也没有改过 xff0
  • jsp 实现修改和删除功能

    main jsp 实现查询 在此界面快捷方式到修改界面 点击修改 会把数据传递到exit jsp 修改 edit jsp 前面数据 xff1a 数据库 xff1a 1 2 Navicat Premium Data Transfer 3 4
  • [nginx]invalid number of arguments

    invalid number of arguments nginx出现以下的错误 xff0c 基本上错误的原因就是少了后面的分号导致 invalid number of arguments in 34 include 34 directiv
  • HDU 2246 考研路茫茫——考试大纲

    HDU 2246 考研路茫茫 考试大纲 聽說這題要打表999 43 就傻傻的從0 N一個個地貼在代碼上了 打了幾個文件 xff0c 一同學就說我錯了 xff0c 杯具 因為提交上去的代碼長度不能超64K 白打了 xff0c 不過提示我測試數
  • MariaDB简介

    一 什么是数据库 DB 与 DBMS xff1a DB xff08 DataBase xff09 即数据库 xff0c 存储已经组织好的数据的容器 DBMS xff08 DataBase Manage System xff09 是数据库管理
  • 面试问题之操作系统:动态链接库和静态链接库的区别

    动态链接库是一个可以被其它应用程序共享的程序模块 xff0c 其中封装了一些可以被共享的例程和资源 动态链接库文件名的扩展名一般是dll xff0c 也有可能是drv xff0c sys和fon xff0c 它和可执行文件 exe 非常类似
  • linux中使用Crontab定时执行java的jar包无法使用环境变量的问题

    1 crontab简单使用 cmd 其实就是5个星星的事情 xff0c 随便百度一下吧 5个时间标签用来标注执行的设定 比如每5分钟执行一次 5 cmd 要特别注意 2 有些命令在命令行里执行很好 xff0c 到了crontab里面不能正常
  • Linux内核版本介绍与查询

    Linux内核版本命名在不同时期有着不同的规范 xff0c 在涉及到Linux版本问题时经常容易混淆 xff0c 主线版本 xff0f 稳定版 xff0f 长期支持版本经常搞不清楚 xff0c 本文主要记录下内核版本命名的规则以及如何查看L
  • kvm介绍

    KVM Kernel Based Virtual Machines 是一个基于Linux内核的虚拟化技术 可以直接将Linux内核转换为Hypervisor xff08 系统管理程 序 xff09 从而使得Linux 内核能够直接管理虚拟机
  • linux安装Topicons Plus解决图标不显示问题

    安装TopIcons Plus地址 https extensions gnome org extension 1031 topicons 1 点击链接下载安装包 然后解压 2 把解压后的文件包 移动到此路径下 xff1a usr share
  • 图像缩放算法(最临近点插值算法、双线性内插值算法、双立方插值算法)

    1 最临近点插值算法 xff1a 当一张 xff08 N M xff09 大小的图像放大到 xff08 xff08 j N xff09 xff08 k M xff09 xff09 时 xff0c 那么两张图像之间的像素点存在对应关系 xff
  • C语言float是什么类型,float是什么数据类型?

    float是浮点型数据类型 float是C语言的基本数据类型中的一种 xff0c 表示单精度浮点数 C语言规定单精度浮点型在内存占用4个字节 xff0c 精度为7位 xff0c 取值范围为 xff1a 3 4 10 38 3 4 10 38
  • 服务器文件 修改,服务器文件修改

    服务器文件修改 内容精选 换一换 远程连接Linux云服务器报错 xff1a Module is unknown修改此问题需要重启进入救援模式 xff0c 请评估风险后进行操作 本节操作涉及云服务器重启操作 xff0c 可能会导致业务中断
  • linux 批量重启机器脚本,(Linux) 一键批量启动、停止、重启Jar包Shell脚本

    废话不多说 xff0c 直接上脚本 xff0c 我这里是以spring cloud项目做的示例 bin sh export EUREKA 61 family eureka 1 0 0 jar export GATEWAY 61 family