一、概述
使用IDEA生成的linux系统可执行程序.sh文件,手动启动没有问题,开机自启动踩了不少坑,网上提供的三种方法都不适合,
有一种方法是在/etc/rc.local文件中加上启动脚本的命令,我加上之后,出现如下错误
我猜可能是mysql服务还没有启动,导致连接请求被拒绝。
因为我一直想将生成的这个.sh文件开机自启动,但是无奈总是不尽人意,后来换个思路,通过xshell脚本来启动这个.sh文件,搞定!
二、自定义开机启动脚本
在/etc/profile.d/目录下创建rds_start.sh文件
vi rds_start.sh
输入以下内容:
#!/bin/sh#chkconfig: 2345 80 90#description:rds_start.shcd /home/softs/rds/bin/nohup ./rds_start.sh &
其中其三行是固定格式
#!/bin/sh是指此脚本使用/bin/sh来解释执行#chkconfig: 2345 20 802345表示系统运行级别是2,3,4或者5时都启动此服务,20,是启动的优先级,80是关闭的优先级,如果启动优先级配置的数太小时如0时,则有可能启动不成功,因为此时可能其依赖的网络服务还没有启动,从而导致自启动失败。#description:rds_start.sh是描述信息
wq!保存后 使用chmod设置可执行权限
chmod +x rds_start.sh
然后将其拷贝到/etc/init.d/目录下,否则添加服务不成功:
cp rds_start.sh /etc/init.d/
添加到系统服务
chkconfig --add rds_start.sh
设置开机启动
chkconfig rds_start.sh on
然后重启linux
shutdown -r now
重启之后连接查看效果:
ps -ef | grep rds
开机自启动成功!
备注
pom.xml中加入以下插件可打包生成.sh文件
<plugin><groupId>org.codehaus.mojo</groupId><artifactId>appassembler-maven-plugin</artifactId><version>1.10</version><configuration><configurationDirectory>conf</configurationDirectory><includeConfigurationDirectoryInClasspath>true</includeConfigurationDirectoryInClasspath><repositoryLayout>flat</repositoryLayout><assembleDirectory>${project.build.directory}/rds</assembleDirectory><repositoryName>libs</repositoryName><extraJvmArguments>-Xms1024m -Xmx1024m</extraJvmArguments><!-- 生成linux --><binFileExtensions><unix>.sh</unix></binFileExtensions><programs><program><mainClass>com.dj.rds.Application</mainClass><name>rds_start</name></program></programs></configuration></plugin>
maven打包命令
package appassembler:assemble
参考地址:/achilles12345/article/details/52150867
访问我的达人课
访问我的博客 Wang's Blog