• 【Systemctl 启动Java程序但开机未自启动问题】


    systemctl is-enabled servicename.service #查询服务是否开机启动
    systemctl enable *.service #开机运行服务
    systemctl disable *.service #取消开机运行
    systemctl start *.service #启动服务
    systemctl stop *.service #停止服务
    systemctl restart *.service #重启服务
    systemctl reload *.service #重新加载服务配置文件
    systemctl status *.service #查询服务运行状态
    systemctl --failed #显示启动失败的服务
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    检查脚本

    看看关键字有没得写错

    查看日志

    journalctl -u 服务名
    journalctl -u test.service
    如果有日志输出,则查看错误提示即可
    否则查看系统日志cat /var/log/messages 是否有该服务相关信息

    以上两步未解决

    一、cd /usr/lib/systemd/system
    查看服务权限,正常是0644,若为0755(有执行权限),可执行
    chmod -x test.service去掉执行权限
    二、 systemctl is-enabled test.service查看是否已配置开机自启动
    [root@hello system]# systemctl is-enabled test.service
    enabled
    三、若都正常请修改服务名尝试
    例如,将上述服务吗test.service改为 testB.service

    具体步骤
    cd /usr/lib/systemd/system
    #copy一份,并修改服务名为testB.service
    cp test.service testB.service
    systemctl daemon-reload
    #设置为开机启动
    systemctl enable test.service
    #查看是否设置成功
    systemctl is-enabled test.service
    显示enabled即为正常
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    四、若以上还不行,自己写一个最简单的服务测一下,可参考这个帖子https://zhuanlan.zhihu.com/p/472379780,里面介绍比较详细,如果不想看,那么我下面贴一个自己的。

    test.service 脚本
    [Unit]
    Description=Java test service
    After=network.target mongod-master.service mongod-slave.service mongod-arbiter.service
    
    [Service]
    Type=forking
    ExecStart=/bin/bash /opt/myhello/test.sh
    ExecStop=/bin/kill -s QUIT $MAINPID
    PidFile=/var/run/test.pid
    
    [Install]
    WantedBy=multi-user.target
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    test.sh 程序启动脚本
    #!/bin/bash
    
    export JAVA_HOME="/opt/jre-8u131-linux-x64"
    
    export PATH=$PATH:$JAVA_HOME/bin
    
    server_port=8092
    
    nohup java -jar /opt/myhello/test-1.0.0.jar --server.port=${server_port} & > /var/log/rmtest.log
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    五、应该是能解决了,毕竟程序它不是玄学。
    六、以上系统是centos7

  • 相关阅读:
    【无标题】
    Mysql 备份与恢复
    Reggie外卖项目 —— 分类管理模块之修改分类功能
    UE蓝图中Map的遍历
    Unity之NetCode多人网络游戏联机对战教程(5)--ConnectionData与MemoryPack
    基础-MVP定位-轮廓比对算子
    台湾省应广科技PMS150G(PADAUK )纯I/O口单片机系列
    LLM(大语言模型)「Agent」开发教程-LangChain(三)
    Nacos知识点
    ES证书过期替换方案
  • 原文地址:https://blog.csdn.net/m0_37657585/article/details/125514316