启动脚本 startup.sh
#!/bin/bash
PROJECTNAME=java-project
pid=`ps -ef |grep $PROJECTNAME |grep -v "grep" |awk '{print $2}'`
if [[ $pid ]]; then
echo "$PROJECTNAME is running and pid is $pid"
else
echo "Success to start $PROJECTNAME ..."
# nohup java -Xms200m -Xmx250m -jar $PROJECTNAME.jar >> server.out 2>&1 &
nohup java -Xms512m -Xmx2048m -Dfile.encoding=utf-8 -jar $PROJECTNAME.jar --spring.profiles.active=prod -Dspring.config.location=config/application.properties >> server.out 2>&1 &
fi
这段代码是一个bash脚本,主要用于检测一个名为
java-project
的Java应用程序是否在运行,如果没有运行则启动它。nohup:表示不受终端关闭影响,程序可以在后台运行。
java:表示要运行的是Java程序。
-Xms512m:表示设置Java虚拟机的初始堆内存为512MB。
-Xmx2048m:表示设置Java虚拟机的最大堆内存为2048MB。
-Dfile.encoding=utf-8:表示设置文件编码为UTF-8。
-jar $PROJECTNAME.jar:表示要运行的Java程序的jar包文件。
--spring.profiles.active=prod:表示设置Spring的profile为prod,指定程序的运行环境为生产环境。
-Dspring.config.location=config/application.properties:表示指定Spring的配置文件的位置为config/application.properties。
>> server.out 2>&1:表示将程序的标准输出和标准错误输出都重定向到server.out文件中。
停止脚本 shutdown.sh
#!/bin/bash
PROJECTNAME=java-project
pid=`ps -ef |grep $PROJECTNAME |grep -v "grep" |awk '{print $2}' `
if [[ $pid ]]; then
echo "$PROJECTNAME is running on pid $pid"
kill -9 $pid
if [[ $? -eq 0 ]];then
echo "sucess to stop $PROJECTNAME "
else
echo "fail to stop $PROJECTNAME "
fi
fi
检测名为
java-project
的进程是否正在运行,并将其PID保存在变量pid
中。如果有正在运行的进程,则pid
将保存对应的PID;如果没有正在运行的进程,则pid
将为空。如果变量
pid
存在,则输出"$PROJECTNAME is running on pid $pid"
,其中$PROJECTNAME
表示进程的名称,$pid
表示进程的PID。执行 杀死进程命令 kill -9 $pid
如果上一个命令的退出状态码为0,则输出
"sucess to stop $PROJECTNAME"
,表示成功停止了进程。如果上一个命令的退出状态码不为0,则输出
"fail to stop $PROJECTNAME"
,表示停止进程失败。