欢迎您光临本小站。希望您在这里可以找到自己想要的信息。。。

Linux添加自定义启动服务

Linux water 2646℃ 0评论

在linux中安装的有些程序是用来提供服务,但是其安装脚本中没有给出服务自启动脚本,这就需要我们自己添加自启动脚本。本文以在开发机中(fedora 18)添加confluence服务来讲解

实现方式

  1. 添加/etc/init.d/脚本

  2. systemd的实现方式

基础知识

  1. 运行级别

  1. # 0 – 停机(千万不能把initdefault 设置为0 )

  2. # 1 – 单用户模式 # s init s = init 1

  3. # 2 – 多用户,没有 NFS

  4. # 3 – 完全多用户模式(标准的运行级)

  5. # 4 – 没有用到

  6. # 5 – X11 多用户图形模式(xwindow)

  7. # 6 – 重新启动 (千万不要把initdefault 设置为6 )

  • /etc/rc.d/目录

    1. KNxxx这个文件代表关机时执行,即调用此脚本的stop函数

    2. SNxxx这个文件代表开机时执行,即调用此脚本的start函数

    3. 上述中N代表优先级,0-100,值越大,优先级越低

    4. 上述xxx代表对应的启动脚本名,例如:mysql

    5. /etc/rc.d/init.d 此目录中保存启动脚本

    6. /etc/rc.d/rcN.d/  N对应运行级别,即在不同运行级别时选择不同目录中的脚本

    7. /etc/rc.d/rcN.d/* 此目录下主要有两种文件

  • chkconfig命令

    1. 添加服务 chkconfig –add <name>

    2. 删除服务 chkconfig –del <name>

    3. 查看服务列表 chkconfig [–list] [–type <type>] [name]

    4. 修改服务状态 chkconfig [–level <levels>] [–type <type>] <name> <on|off|reset|resetpriorities>

    第一种方式的栗子

    添加脚本

    例如下面的启动脚本:/etc/rc.d/init.d/confluence

    initd启动脚本

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    #!/bin/bash
    # chkconfig: 2345 98 98
    # description: Confluence
    # Confluence Linux service controller script
    cd "/opt/atlassian/confluence/bin"
    case "$1" in
        start)
            ./start-confluence.sh
            ;;
        stop)
            ./stop-confluence.sh
            ;;
        restart)
            ./stop-confluence.sh
            ./start-confluence.sh
            ;;
        *)
            echo "Usage: $0 {start|stop|restart}"
            exit 1
            ;;
    esac

    其中:

    1. 第一行中“#!/bin/bash” 不多解释,表明用什么脚本解释器执行该脚本

    2. 第二行”# chkconfig: 2345 98 98“, 如果想要被chkconfig识别,此行必须加,2345对应着运行级别,第一个98代表开机优先级,第二个98代表关机优先级

    3. 第三行是描述

    4. 脚本输入参数有:start,stop,restart,无参数等,这个要因功能而定,但是,start和stop是必须的

    识别脚本

    为了让chkconfig识别脚本,并且使脚本生效可以执行以下命令

    Icon

    chkconfig –add confluence

    此命令执行以后,可以查看对应的运行级别目录,可以发现rcN.d目录下多了S98confluence的软连接,其连接的目的都是init.d/confluence

    如此以后,重启一下linux就可以验证是否生效了

    第二种方式的栗子

    systemd的service文件主要存在下面的目录

    Icon

    /usr/lib/systemd/system/

    下面以sshd.service为例,可以看到如下内容

    /usr/lib/systemd/system/sshd.service

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    [Unit]
    Description=OpenSSH server daemon
    After=syslog.target network.target auditd.service
     
    [Service]
    EnvironmentFile=/etc/sysconfig/sshd
    ExecStartPre=/usr/sbin/sshd-keygen
    ExecStart=/usr/sbin/sshd -D $OPTIONS
    ExecReload=/bin/kill -HUP $MAINPID
     
    [Install]
    WantedBy=multi-user.target

    以后就可以用systemctl命令来启动、关闭sshd服务啦

    转载请注明:学时网 » Linux添加自定义启动服务

    喜欢 (0)or分享 (0)

    您必须 登录 才能发表评论!