PS:需要注意一点,我们一般将某些环境属性(如JDK)配置在了/etc/profile中,而/etc/profile是在用户登录时才会加载,所以如果开机启动脚本中要用到java环境,需要手动加载进来!!!这样才能实现tomcat或java项目的开机自启,否则是不会执行的~
开机要启动的脚本startApp.sh
[root@localhost application]# vi /home/application/startApp.sh [root@localhost application]# cat /home/application/startApp.sh #!/bin/bash nohup java -jar /home/application/pan/preview.jar>/home/application/pan/preview.log & nohup java -jar /home/application/pan/cloud.jar>/home/application/pan/cloud.log & /bin/echo $(/bin/date +%F_%T) >> /home/application/startApp.log
方法一:修改/etc/rc.local
/etc/rc.local,该文件为链接文件
[root@localhost application]# ll /etc/rc.local lrwxrwxrwx. 1 root root 13 Feb 5 10:03 /etc/rc.local -> rc.d/rc.local
修改/etc/rc.local文件
[root@localhost application]# vi /etc/rc.d/rc.local [root@localhost application]# cat /etc/rc.d/rc.local #!/bin/bash # THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES # # It is highly advisable to create own systemd services or udev rules # to run scripts during boot instead of using this file. # # In contrast to previous versions due to parallel execution during boot # this script will NOT be run after all other services. # # Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure # that this script will be executed during boot. #注意这句话Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure #一定要给脚本放权才能执行 touch /var/lock/subsys/local su - root -c '/etc/rc.d/init.d/file-preview-server.sh' #加载java环境 export JAVA_HOME=/home/java/jdk1.8.0_201 export CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar export PATH=$PATH:${JAVA_HOME}/bin #启动redis service redis start #启动nexus service nexus start #启动mysql service mysqld start #启动nginx nginx #启动natapp内外网穿透 nohup /usr/local/natapp/natapp -authtoken=XXX -log=stdout -loglevel=ERROR & #启动tomcat /home/tomcat7/bin/startup.sh #启动app /home/application/startApp.sh
centos中/etc/rc.d/rc.local默认是无权执行的,所以按照/etc/rc.d/rc.local注释中所说:
[root@localhost application]# chmod +x /etc/rc.d/rc.local
方法二:chkconfig管理
删除掉方法一的配置,并且在/home/application/startApp.sh中引入java环境
[root@localhost application]# vi /etc/init.d/startApp #!/bin/bash # chkconfig: 3 88 88 /bin/bash /home/application/startApp.sh >/dev/null 2>/dev/null [root@localhost application]# chmod +x /home/application/startApp.sh
添加到chkconfig,开机自启动
[root@localhost application]# chkconfig --add startApp
[root@localhost application]# chkconfig --list startApp startApp 0:off 1:off 2:off 3:on 4:off 5:off 6:off
重启系统,验证结果
关闭开机启动
[root@localhost application]# chkconfig startAPp off [root@localhost application]# chkconfig --list startApp startApp 0:off 1:off 2:off 3:off 4:off 5:off 6:off
从chkconfig管理中删除test
[root@localhost application]# chkconfig --list startApp test 0:off 1:off 2:off 3:off 4:off 5:off 6:off [root@localhost application]# chkconfig --del startApp [root@localhost application]# chkconfig --list startApp service test supports chkconfig, but is not referenced in any runlevel (run 'chkconfig --add startApp')