一、概述
使用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.sh
cd /home/softs/rds/bin/
nohup ./rds_start.sh &
其中其三行是固定格式

#!/bin/sh
是指此脚本使用/bin/sh来解释执行

#chkconfig: 2345 20 80
2345表示系统运行级别是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
参考地址:https://blog.csdn.net/achilles12345/article/details/52150867

via https://blog.csdn.net/abcwanglinyong/article/details/84638125

linux自定义开机启动脚本
标签: