• linux操作系统中业务程序及服务的开机启动


    1 背景

    客户要求服务器进行阶段性重启操作,一下子忙坏了系统厂家,服务程序的手动启动和自启动的作用一下子发挥了不同的作用。

    2 目标

    将服务器上的中间件、数据库、业务程序设置为开机自启动,服务器重启后业务程序自启动。

    3 启动类型

    以下为三种设置自启动的方式,根据各自项目的业务需求进行对应的设置。

    • 服务启动-systemctl
    • 服务启动-chkconfig
    • 脚本启动-rc.local

    3.1 服务启动systemctl

    设置成服务启动后可以直接使用系统命令对服务进行启停重启操作
    编辑服务文件 ,以nginx为例进行展开介绍,如有nginx安装需求请移步《linux 系统下四种nginx安装方法》

    系统服务目录:/usr/lib/systemd/system/
    用户服务目录:/usr/lib/systemd/user/
    根据业务需求选择设置服务的目录

    vi /lib/systemd/system/nginx.service

    输入配置信息,其他服务参考一下内容调整为自身软件的目录和程序即可

    [Unit]
    Description=nginx 
    After=network.target 
       
    [Service] 
    Type=forking 
    ExecStart=/usr/local/nginx/sbin/nginx
    ExecReload=/usr/local/nginx/sbin/nginx reload
    ExecStop=/usr/local/nginx/sbin/nginx quit
    PrivateTmp=true 
       
    [Install] 
    WantedBy=multi-user.target
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    创建服务

    systemctl enable nginx.service
    
    • 1

    系统操作命令

    # 启动
    systemctl start nginx
    # 查询状态
    systemctl stuas nginx
    # 重启
    systemctl restart nginx
    # 停止
    systemctl stop nginx
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    3.2 服务启动chkconfig

    Linux chkconfig 命令用于检查,设置系统的各种服务。

    这是Red Hat公司遵循GPL规则所开发的程序,它可查询操作系统在每一个执行等级中会执行哪些系统服务,其中包括各类常驻服务。 面向的操作系统为 RedHat 和 CentOS操作系统

    chkconfig [--add][--del][--list][系统服务]chkconfig [--level <等级代号>][系统服务][on/off/reset]
    
    • 1

    参数:

    • –add  增加所指定的系统服务,让 chkconfig 指令得以管理它,并同时在系统启动的叙述文件内增加相关数据。

    • –del  删除所指定的系统服务,不再由 chkconfig 指令管理,并同时在系统启动的叙述文件内删除相关数据。

    • –level<等级代号>  指定读系统服务要在哪一个执行等级中开启或关闭。

      等级代号列表:
      等级0表示:表示关机
      等级1表示:单用户模式
      等级2表示:无网络连接的多用户命令行模式
      等级3表示:有网络连接的多用户命令行模式
      等级4表示:不可用
      等级5表示:带图形界面的多用户模式
      等级6表示:重新启动

    3.2.1 查看服务

    chkconfig --list 
    
    • 1

    3.2.2 系统自带服务的设置

    开启服务

    chkconfig telnet on   //开启 Telnet 服务
    
    • 1

    关闭服务

    chkconfig telnet off   // 关闭 Telnet服务
    
    • 1

    3.2.3 添加服务设置

    业务程序:jgxt_app
    程序目录:/home/jgxt
    启动脚本:start_jgxt.sh
    将启动命令编辑放入到start_jgxt.sh文件中

    chmod +x start_jgxt.sh
    cp start_jgxt.sh /etc/init.d/start_jgxt
    chkconfig --add start_jgxt
    chkconfig start_jgxt on
    chkconfig --level start_jgxt 2345 on
    chkconfig --list start_jgxt
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    3.3 开机启动脚本

    以加载挂载盘为例
    在linux服务上查了一块256G的SD存储卡,
    在这里插入图片描述

    每次使用改SD卡的使用需要手动挂载一下,很不方便。
    在这里插入图片描述
    使用命令启动

    在这里插入图片描述
    需要输入账号的密码进行挂载处理
    创建启动文件

    vim /home/fwmh/script/mount_d.sh

    #!/bin/bash
    echo xxxxx | sudo mount -t drvfs D://mnt/d
    
    • 1
    • 2

    注:xxxxx为普通账号的密码

    脚本启动

    # 赋予rc.local文件可执行权限
    sudo chmod +x /etc/rc.d/rc.local
    # 执行脚本可执行权限
    chmod +x /home/fwmh/script/mount_d.sh
    
    • 1
    • 2
    • 3
    • 4

    将启动脚本追加入rc.local文件

    # 追加到文末
    /home/fwmh/script/mount_d.sh
    
    • 1
    • 2

    系统测试

  • 相关阅读:
    详解 Java 泛型(Generic)机制
    AcWing 668. 游戏时间2
    selenium 自动化测试——环境搭建
    【Linux】系统中安装Go环境
    exceljs库实现excel表样式定制化
    Java线程池基础
    double 和 float 的区别
    【AI编程】ai编程插件汇总iFlyCode、codegeex
    数据库范式
    我做的百度飞桨PaddleOCR .NET调用库
  • 原文地址:https://blog.csdn.net/shallow72/article/details/127782846