关于一个shell脚本的解释问题

帮个朋友问下,在使用springboot时,可以使用jar命令直接启动服务,请解释一下下面的startup.sh脚本含义。------------------------... 帮个朋友问下,在使用spring boot时,可以使用jar命令直接启动服务,请解释一下下面的startup.sh脚本含义。
------------------------------我是分割线------------------------
cd `dirname $0`
jar_file=$(ls *.jar)
module_name=${jar_file%.*}
now_date=$(date +%Y-%m-%d)

pid=$(ps -ef|grep ${module_name}|grep java|head -n 1|awk '{print $2}');
echo kill ${module_name} pid:${pid}
kill -9 $pid

JAVA_OPTS="-Xms386m -Xmx512m"

if [ ! -d "logs" ]; then
mkdir logs
fi

nohup java $JAVA_OPTS -jar ${jar_file} $params > logs/${module_name}.out 2>&1 &
pid=$(ps -ef|grep ${module_name}|grep java|head -n 1|awk '{print $2}');
echo module:${module_name} startup finish pid:${pid}.
sleep 0.5
echo ${pid} > ${module_name}.pid
------------------------------我是分割线------------------------
展开
 我来答
duyi324
2018-01-31 · TA获得超过292个赞
知道小有建树答主
回答量:322
采纳率:70%
帮助的人:173万
展开全部

cd `dirname $0`    //首先cd到脚本所在目录

jar_file=$(ls *.jar)  //然后列出jar格式的文件,并赋值给jar_file变量
module_name=${jar_file%.*}   //删掉最后一个  .  及其右边的字符串,即扩展名
now_date=$(date +%Y-%m-%d)  //按格式取当前日期


// 下面这句是查找名为变量 module_name 的进程,然后再找java进程。

// 然后显示出第一行,第二个域。总的来说就是查找进程的PID

pid=$(ps -ef|grep ${module_name}|grep java|head -n 1|awk '{print $2}');

echo kill ${module_name} pid:${pid}  // 结束上面找到进程

kill -9 $pid  

// 设置JVM运行参数,最小内存386mb,最大内存512mb
JAVA_OPTS="-Xms386m -Xmx512m"  设置


// 如果没有logs目录则新建

if [ ! -d "logs" ]; then
mkdir logs
fi


// 重新执行变量jar_file变量指向的文件,并输出日志到logs目录下的.out文件中,同时重新查找pid。
nohup java $JAVA_OPTS -jar ${jar_file} $params > logs/${module_name}.out 2>&1 &
pid=$(ps -ef|grep ${module_name}|grep java|head -n 1|awk '{print $2}');

// 显示进程信息。
echo module:${module_name} startup finish pid:${pid}.
sleep 0.5
echo ${pid} > ${module_name}.pid

综上所述,这段代码用于重启spring boot进程。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式