上传jar包到服务器使其开机自启
思路:使用shell脚本实现注册服务;
前提: 配置好jdk环境变量
一、编写shell脚本
在/etc/rc.d/init.d目录下创建autotest.sh脚本如下:
#保证该脚本能被chkconfig识别
#!/bin/sh
# chkconfig: 2345 85 15
# description:auto_run
#程序名
RUN_NAME="check-1.0-SNAPSHOT.jar"
#jar 位置
JAVA_OPTS=/root/Java/check-1.0-SNAPSHOT.jar
LOG_OPTS=/root/Java/nohup.out
#开始方法
start() {
source /etc/profile; nohup java -Dspring.profiles.active=prod -Dfile.encoding=UTF-8 -Duser.timezone=GMT+08 -jar $JAVA_OPTS >$LOG_OPTS 2>&1 &
echo "$RUN_NAME started success."
}
#结束方法
stop() {
echo "stopping $RUN_NAME ..."
kill -9 `ps -ef|grep $JAVA_OPTS|grep -v grep|grep -v stop|awk '{print $2}'`
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
*)
echo "Userage: $0 {start|stop|restart}"
exit 1
esac
注意:
1、 source /etc/profile; 刚开始没加上,以为配置了jdk环境变量就可以,事实也是,如果直接执行java -jar 命令,程序能够跑起来;但是在shell脚本中就不行了,加上此段代码,指定jdk,成功解决!
2、 nohup 命令使用 2>&1 & 结尾,不然也会报错;
3、新增文件时使用vim命令,不要在windows下创建文件后复制过去,因为换行符win与linux不同,避免报错;
二、设置执行权限
将zhihudemo-0.0.1-SNAPSHOT.jar和zhihudemoService.sh加上执行权限:
chmod +x /etc/rc.d/init.d/auto-jar.sh chmod +x /root/Java/check-1.0-SNAPSHOT.jar
三、添加到chkconfig
添加到chkconfig作为系统服务,并设置开机启动:
chkconfig --add zhihudemoService.sh (添加为系统服务)
chkconfig zhihudemoService.sh on (开机自启动)
service zhihudemoService.sh start(启动服务)
执行完成后重启,查看启动日志,可以看到该jar包程序已经作为守护进程在系统后台运行
如果喜欢,请附带此链接转载。谢谢