centos7下设置成开机启动的java程序没有跑起来

centos下写了一个java程序,想设置成开机启动,然而设置成功之后,发现程序并没有跑起来。


使用了两种方法去设置开机启动,第一种是使用systemctl, 第二种就是直接修改rc.local文件,然后两种方法均是不行。 我的环境是centos7,第二种使用的方法是修改  /etc/rc.d/rc.local 文件,在最后一行加上 java -jar test.jar, 然后将rc.local加上执行权限 chmod +x rc.local


能够找到没有启动的原因是因为我使用supervisor在管理我的各种程序,java程序没有跑起来给了一个提示信息: can not find command "java"。 然后我手动敲命令或者使用supervisor启动都能成功。我就知道是环境变量的原因了。 


centos上安装java环境有几种方法,一种是使用yum命令安装,一种是直接解压jdk包到centos下面。 第一种不需要配置环境变量,第二种需要手动配置环境变量。 这个地方需要讲解一下环境变量是做什么用的, 为什么第一种方法不需要使用环境变量。  在linux下面运行程序下,需要给出程序的路径,比如说我们在a.out的目录下运行a.out 我们需要使用命令 ./a.out  而不能直接使用a.out。 如果直接使用a.out就需要将a.out拷贝到/bin 或者/sbin 目录下面。 这是因为linux在运行命令的时候如果没有找到程序就会去环境变量里边查找里边的目录,在linux里边环境变量是放在一个配置文件,配置文件想要起作用是需要使用source命令生效的。 

然后第二个就是涉及到linux的启动过程了。在linux启动过程中,可以看成有几个阶段,比较尴尬的是环境变量配置文件生效这个操作就有点晚。 而且在rc.local文件中有这么一段话: 

In contrast to previous due to parallel execution during boot this script will NOT be run after all other services. 

也就是centos7版本的时候,这个文件内的命令将会跟其他启动服务并行,不会在系统完成启动结束后再执行。这样就导致了环境变量生效在java运行之后。就出现了命令执行失败。


知道了原因去解决这个命令就比较简单了。 

第一个就是直接在命令中指定java工具的路径。  比如在我的电脑上,把命令改成 /usr/local/jdk1.8.0_144/bin/java -jar test.jar,

第二种方法就是在bin目录下创建java的软链接,也就是windows的快捷方式。这也是使用yum命令安装不需要配置环境变量的原因。 




  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值