关于一个shell脚本的解释问题
------------------------------我是分割线------------------------
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
------------------------------我是分割线------------------------ 展开
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进程。