centos7重启后/etc/rc.local中的脚本没有执行

24 篇文章 0 订阅

前阵子自己安装了WMware16、centos7,配置好jdk、mysql、nginx、redis并设置好开机自动启动后,打算将服务也做成自启动,因为之前做过本以为会很顺利,结果整了快两小时,觉得有必要记录下。

之前自己记录的博客:centos7开机运行java的sh脚本_centos7执行sh文件_lanren312的博客-CSDN博客

配置好后重启虚拟机发现运行java的脚本没运行成功,排查开始......

先上配置文件

1、有提示 : chmod +x /etc/rc.d/rc.local

执行后可以看到有了运行权限

 再次重启虚拟机发现运行java的脚本没运行成功......

2、修改 /usr/lib/systemd/system/rc-local.service

rc-local 服务文件中没有 Install 字段的相关信息,如果不写系统就不认为它是一个 systemd 服务。

[Install]

WantedBy=multi-user.target

 再次启动,然并卵......

3、启动rc-local服务,并加入开机启动

 什么也不想说了......

4、仔细分析

回头看 cat /etc/rc.local 里面的文件,touch /var/lock/subsys/local,再去看这个文件是实时创建的,说明 /etc/rc.local 是开机启动了的,那就是自己的运行脚本有问题了,立马醒悟,去看了下服务的启动日志,提示  nohup: 无法运行命令"java": 没有那个文件或目录

nohup java -jar /data/xxxx/xxxx.jar >/data/xxxx/xxxx.log 2>&1 &

直接运行脚本时没有问题的,但是开机启动咋就不行了,无法识别java命令,那就填写全路径

[root@localhost /]# echo $JAVA_HOME
/data/lanren312/jdk1.8.0_191
nohup /data/lanren312/jdk1.8.0_191/bin/java -jar /data/xxxx/xxxx.jar >/data/xxxx/xxxx.log 2>&1 &

再次重启虚拟机,服务自启动了.....

5、疑惑

1、如果在 /etc/rc.local中配置jdk环境,运行脚本是否就不需要写全路径了,这个没有尝试,但感觉应该是可行的。

 2、将服务启动脚本做成服务,有待尝试

vi /etc/systemd/system/lanren312.service
 
######## 写入内容
[Unit]
Description=lanren312-server
After=network.target
 
[Service]
Type=forking
ExecStart=/data/xxxx/start.sh
PrivateTmp=true
 
[Install]
WantedBy=multi-user.target

systemctl start lanren312.service   ## 启动lanren312服务
systemctl stop lanren312.service    ## 停止lanren312服务
systemctl restart lanren312.service ## 重启lanren312服务
systemctl status lanren312.service  ## 查看lanren312服务当前状态
 
systemctl enable lanren312.service  ## 设置lanren312服务开机自启动
systemctl disable lanren312.service ## 停止lanren312服务开机自启动

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值