在linux中安装的有些程序是用来提供服务,但是其安装脚本中没有给出服务自启动脚本,这就需要我们自己添加自启动脚本。本文以在开发机中(fedora 18)添加confluence服务来讲解
实现方式
-
添加/etc/init.d/脚本
-
systemd的实现方式
基础知识
-
运行级别
-
# 0 – 停机(千万不能把initdefault 设置为0 )
-
# 1 – 单用户模式 # s init s = init 1
-
# 2 – 多用户,没有 NFS
-
# 3 – 完全多用户模式(标准的运行级)
-
# 4 – 没有用到
-
# 5 – X11 多用户图形模式(xwindow)
-
# 6 – 重新启动 (千万不要把initdefault 设置为6 )
/etc/rc.d/目录
-
KNxxx这个文件代表关机时执行,即调用此脚本的stop函数
-
SNxxx这个文件代表开机时执行,即调用此脚本的start函数
-
上述中N代表优先级,0-100,值越大,优先级越低
-
上述xxx代表对应的启动脚本名,例如:mysql
-
/etc/rc.d/init.d 此目录中保存启动脚本
-
/etc/rc.d/rcN.d/ N对应运行级别,即在不同运行级别时选择不同目录中的脚本
-
/etc/rc.d/rcN.d/* 此目录下主要有两种文件
chkconfig命令
-
添加服务 chkconfig –add <name>
-
删除服务 chkconfig –del <name>
-
查看服务列表 chkconfig [–list] [–type <type>] [name]
-
修改服务状态 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 |
其中:
-
第一行中“#!/bin/bash” 不多解释,表明用什么脚本解释器执行该脚本
-
第二行”# chkconfig: 2345 98 98“, 如果想要被chkconfig识别,此行必须加,2345对应着运行级别,第一个98代表开机优先级,第二个98代表关机优先级
-
第三行是描述
-
脚本输入参数有:start,stop,restart,无参数等,这个要因功能而定,但是,start和stop是必须的
识别脚本
为了让chkconfig识别脚本,并且使脚本生效可以执行以下命令
chkconfig –add confluence
此命令执行以后,可以查看对应的运行级别目录,可以发现rcN.d目录下多了S98confluence的软连接,其连接的目的都是init.d/confluence
如此以后,重启一下linux就可以验证是否生效了
第二种方式的栗子
systemd的service文件主要存在下面的目录
/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添加自定义启动服务