注意:脚本我已经放在资源上了可以直接下载
1.脚本 创建符合项目的脚本
[root@master01 home]# chmod -R 755 pro_demo.sh
#jar包 jar_name=demo.jar jar_path=/usr/webjar/ log_path=/usr/webjar/logs/`date +%y-%m-%d`_out.log #指向自定义jdk #export JAVA_HOME=/usr/jdk/jdk1.8.0_381 #export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar #export PATH=$JAVA_HOME/bin:$PATH stop() { echo "" pid=$(ps -ef | grep $jar_name | grep -v grep | awk '{print $2}') if [ -z $pid ]; then # -z 是判断是否为空 echo "${jar_name}未运行!" else echo "准备关闭进程$pid" kill -9 $pid sleep 0.5 echo "${jar_name}已关闭!" fi echo "" } start() { echo "" pid=$(ps -ef | grep $jar_name | grep -v grep | awk '{print $2}') if [ -z $pid ]; then cd $jar_path # 这里转到jar包目录执行命令,是为了使用jar_path下的config文件,貌似java程序只能识别当前执行命令目录下的配置,否则就是使用已打入Jar包的配置文件。 nohup java -jar $jar_name >$log_path 2>&1 & pid=$(ps -ef | grep $jar_name | grep -v grep | awk '{print $2}') echo "应用 ${jar_name}启动成功,pid=${pid}" # tail -f $log_path else echo "应用 ${jar_name} 正在运行,pid = ${pid}" fi echo "" } status() { echo "" pid=$(ps -ef | grep $jar_name | grep -v grep | awk '{print $2}') if [ -z $pid ]; then echo "应用 ${jar_name} 未运行" else echo "应用 ${jar_name} 正在运行,pid = ${pid}" fi echo "" } restart() { stop sleep 2 echo "停止完成,准备启动jar包" start } action() { echo "请输入数字选择要执行的操作:1=启动,2=重启,3=停止,4=查看运行状态,5=退出" echo '你输入的数字为:' read a case $a in "1") start ;; "2") restart ;; "3") stop ;; "4") status ;; "5") exit 1 ;; *) echo "输入错误,请重新输入" action ;; esac } action
2.脚本讲解
主要提供了启动、停止、重启、查看状态等操作。以下是脚本的详细讲解:
- 变量定义:
jar_name=demo.jar
:定义了JAR包的名字。jar_path=/home/
:定义了JAR包所在的路径。log_path=/home/logs/
:定义了日志的输出路径,使用了当前日期作为日志文件的名称。
- 停止函数(stop):
- 函数首先通过
ps -ef | grep $jar_name
查找正在运行的与jar_name
匹配的进程。 - 如果找到了进程,它会输出进程ID并使用
kill -9
命令强制关闭该进程。 - 如果没找到进程,它会输出提示信息表示该JAR包未运行。
- 启动函数(start):
- 首先,它检查JAR包是否正在运行。
- 如果没有运行,它会进入
jar_path
目录并使用nohup
命令启动JAR包,并将输出重定向到log_path
指定的日志文件。 - 如果JAR包正在运行,它会输出提示信息表示该JAR包正在运行。
- 状态函数(status):
- 该函数与停止函数类似,但输出的是JAR包的状态,而不是执行停止操作。
- 重启函数(restart):
- 首先调用停止函数关闭JAR包。
- 等待2秒后,再调用启动函数启动JAR包。
- 动作函数(action):
- 提示用户输入数字选择要执行的操作(启动、重启、停止、查看状态、退出)。
- 根据用户输入的数字,调用相应的函数。
- 脚本执行:
- 脚本的最后一行调用了
action
函数,因此当脚本被执行时,它会提示用户输入数字并执行相应的操作。
用户通过输入数字来执行不同的操作。
3.脚本使用
[root@master01 home]# ./pro_demo.sh
请输入数字选择要执行的操作:1=启动,2=重启,3=停止,4=查看运行状态,5=退出
你输入的数字为:
1
应用 demo.jar启动成功,pid=19349
[root@master01 home]# cd logs/
[root@master01 logs]# ls
23-12-18_demo.log