宣城网站seo,国外产品推广平台,性价比高的做网站公司,微信做代理的网站1、编写启动脚本
我们在通过jar启动项目时#xff0c;有时候会比较多#xff0c;启动会比较麻烦#xff0c;需要编写shell脚本启动#xff0c;将启动脚本存放在需要启动的jar包路径下。#xff08;文档存放在 /home/process_parent #xff09;
vim start.sh#! /bin/sh…1、编写启动脚本
我们在通过jar启动项目时有时候会比较多启动会比较麻烦需要编写shell脚本启动将启动脚本存放在需要启动的jar包路径下。文档存放在 /home/process_parent
vim start.sh#! /bin/sh
# 端口号
PORTS(9527 8004 8005 8001)
# 模块
MODULES(process-gateway process-activiti process-auth process-system)
# 模块名称
MODULE_NAMES(网关 流程配置中心 用户登录 数据管理)
# jar包数组
JARS(process-gateway-1.0.0-SNAPSHOT.jar process-activiti-0.0.1-SNAPSHOT.jar process-auth-1.0.0-SNAPSHOT.jar process-system-1.0.0-SNAPSHOT.jar)
# jar包路径
JAR_PATH/home/process_parent
# 日志路径
LOG_PATH/home/process_parent/logs
start() {
local MODULE
local MODULE_NAME
local JAR_NAME
local command$1
local commandOk0
local count0
local okCount0
local port0
for((i0;i${#MODULES[]};i))
do
MODULE${MODULES[$i]}
MODULE_NAME${MODULE_NAMES[$i]}
JAR_NAME${JARS[$i]}
PORT${PORTS[$i]}
if [ $command all ] || [ $command $MODULE ];then
commandOk1
count0
PIDps -ef |grep $(echo $JAR_NAME | awk -F/ {print $NF}) | grep -v grep | awk {print $2}
if [ -n $PID ];then
echo $MODULE---$MODULE_NAME:已经运行,PID$PID
else
exec nohup java -Xms256m -Xmx512m -jar $JAR_PATH/$JAR_NAME $LOG_PATH/$MODULE.log 21
PIDps -ef |grep $(echo $JAR_NAME | awk -F/ {print $NF}) | grep -v grep | awk {print $2}
while [ -z $PID ]
do
if (($count 30));then
echo $MODULE---$MODULE_NAME:$(expr $count \* 10)秒内未启动,请检查!
break
fi
count$(($count1))
echo $MODULE_NAME启动中..................
sleep 10s
PIDps -ef |grep $(echo $JAR_NAME | awk -F/ {print $NF}) | grep -v grep | awk {print $2}
done
okCount$(($okCount1))
echo $MODULE---$MODULE_NAME:已经启动成功,PID$PID
fi
fi
done
if(($commandOk 0));then
echo 第二个参数输入错误
else
echo ............本次共启动:$okCount个服务...........
fi
}stop() {
local MODULE
local MODULE_NAME
local JAR_NAME
local command$1
local commandOk0
local okCount0
for((i0;i${#MODULES[]};i))
do
MODULE${MODULES[$i]}
MODULE_NAME${MODULE_NAMES[$i]}
JAR_NAME${JARS[$i]}
if [ $command all ] || [ $command $MODULE ];then
commandOk1
PIDps -ef |grep $(echo $JAR_NAME | awk -F/ {print $NF}) | grep -v grep | awk {print $2}
if [ -n $PID ];then
echo $MODULE---$MODULE_NAME:准备结束,PID$PID
kill -9 $PID
PIDps -ef |grep $(echo $JAR_NAME | awk -F/ {print $NF}) | grep -v grep | awk {print $2}
while [ -n $PID ]
do
sleep 3s
PIDps -ef |grep $(echo $JAR_NAME | awk -F/ {print $NF}) | grep -v grep | awk {print $2}
done
echo $MODULE---$MODULE_NAME:成功结束
okCount$(($okCount1))
else
echo $MODULE---$MODULE_NAME:未运行
fi
fi
done
if (($commandOk 0));then
echo 第二个参数输入错误
else
echo ............本次共停止:$okCount个服务............
fi
}case $1 in
start)
start $2
;;
stop)
stop $2
;;
restart)
stop $2
sleep 3s
start $2
;;
*)
echo 第一个参数请输入:start|stop|restart
exit 1
;;
esac需要修改的地方如下其他地方不变 PORTS 端口号多个用空格隔开 MODULES 模块多个用空格隔开 MODULE_NAMES 模块名称多个用空格隔开 JARS jar包数组多个用空格隔开 JAR_PATH jar包路径多个用空格隔开 LOG_PATH 日志路径多个用空格隔开 编写成功后修改文件的权限
chmod 7 start.sh2、启动脚本
## 启动所有
./start.sh start all
## 停止所有
./start.sh stop all
## 重启所有
./start.sh restart all
## 启动某一个 这里的gateway与sh中的module中定义的一样即可
./start.sh restart gateway3、设置脚本开机自启
方式一修改 /etc/rc.d/rc.local 文件
# 编辑自启管理文件
vim /etc/rc.d/rc.local# 写入脚本存放路径
/home/process_parent/start.sh# 重启系统
reboot方法二使用 crontab
crontab 是 Linux 下的计划任务当时间达到我们设定的时间时可以自动触发某些脚本的运行。
# 进入crontab管理
crontab -e# 添加需要被管理的项目
reboot /home/process_parent/start.sh# 重启系统
reboot方法三使用 systemd 服务
本方法仅适用于 systemd 系统。如何区分是不是 systemd 系统很简单只需运行 ps aux 命令查看 pid 为 1 的进程是不是 systemd 创建的 systemd 启动服务如下。请注意这时后缀是 .service 而不是 .sh 。
vim /etc/systemd/system/start.service在start.service写入以下内容
[Unit]
DescriptionRun a Custom Script at Startup
Afterdefault.target[Service]
ExecStart/home/process_parent/start.sh[Install]
WantedBydefault.target更新 systemd 配置文件
systemctl daemon-reloadsystemctl enable start.service重启系统
reboot坑点
如果使用启动脚本报bad interpreter:No such file or directory的错误 原因.sh脚本在windows系统下编写的所以可能有不可见字符从上图错误提示来看很有可能脚本文件是DOS格式的即每一行的行尾以\r\n来标识, 其ASCII码分别是0x0D, 0x0A。
解决办法 1、通过vim filename 或者vi filename 进入编辑即我这是vim startup_heartbeat.sh 2、然后通过shift进入命令模式。接着通过命令set ff 或者 set fileformat 查看文件格式即我这如下图从中可以看到我这文件格式是dos 3、修改文件格式dos为unix。通过命令set ffunix 或 set fileformatunix修改然后再执行set ff 或者 set fileformat查看是否修改成功。即如下图所示 4、启动命令发现正常启动至此完毕