目前协助同事在搭建公司的自动化测试平台,服务器是Ubuntu系统。我做的管理设备连接的程序需要被设置成开启启动。经过查阅资料,最终实现了需求。
1. 编写shell脚本
#! /bin/sh
### BEGIN INIT INFO
# Provides: start-adb-connect-manager
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description:
### END INIT INFO
NAME=/home/adark0915/mxm_appium/ADBConnectManager/adb-connnect-manager-1.0.20180305142648-SNAPSHOT.jar
echo $NAME
ID = `ps -ef | grep "$NAME" | grep -v "$0" | grep -v "grep" | awk '{print $2}'`
echo $ID
echo "------------------------------------------------------------"
for id in $ID
do
kill -9 $id
echo "killed $id"
done
echo "-------------Service have been stopped already------------"
nohup java -jar $NAME /dev/null 2>&1 &
echo "-------------程序已启动,请键入:ps -ef | grep java 进行查看-----------"
其中, BEGIN INIT INFO 的内容是将程序设置成开机启动的初始化信息,这个在脚本中必须声明,不然会报错。
另外,Java可执行程序的名称尽量用绝对路径,避免因路径问题导致的其他错误。
2. 设置脚本的可执行权限
sudo chmod 755 <脚本名称>.sh
3. 将脚本添加到启动脚本,并设置它的优先级
90 表示一个优先级,数值越大表示执行的越晚
sudo mv <脚本名称>.sh /ect/init.d/
// 切换到/ect/init.d/目录下
cd /ect/init.d/
sudo update-re.d <脚本名称>.sh defaults 90
移除开机脚本:
sudo update-rc.d -f <脚本名称>.sh remove
网友评论