Linux添加自定义启动服务

在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 )

  2. /etc/rc.d/目录

    1. /etc/rc.d/init.d 此目录中保存启动脚本
    2. /etc/rc.d/rcN.d/  N对应运行级别,即在不同运行级别时选择不同目录中的脚本
    3. /etc/rc.d/rcN.d/* 此目录下主要有两种文件
      1. KNxxx这个文件代表关机时执行,即调用此脚本的stop函数
      2. SNxxx这个文件代表开机时执行,即调用此脚本的start函数
      3. 上述中N代表优先级,0-100,值越大,优先级越低
      4. 上述xxx代表对应的启动脚本名,例如:mysql
  3. 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服务啦

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值