Redis启动脚本

释放双眼,带上耳机,听听看~!

一、
Linux
启动脚本原理
1、init和运行级别
以CentOS为例,init有7个运行级别(run level),打开/etc/inittab文件能看到:
# Default runlevel. The runlevels used by RHS are:
# 0 – halt (Do NOT set initdefault to this)
# 1 – Sing user mode
# 2 – Multiuser, without NFS (The same as 3, if you do not have networking)
# 3 – Full multiuser mode
# 4 – unused
# 5 – X11
# 6 – reboot (Do NOT set initdefault to this)
/etc/inittab文件规定了系统进入到每一个运行级别时需要运行的命令,也规定了系统默认运行级别:
id:3:initdefault:
在机器引导时,系统进入默认运行级别,并执行相应级别所需命令。
2、服务启动脚本
/etc/init.d中存放了所有的启动脚本,我们可以通过如下命令来启动某个服务:
#/etc/init.d/iptables start
或者
#service iptables start
以此来启动iptables服务。
虽然/etc/init.d目录中存放了所有启动脚本,但是系统引导时,init并不直接在/etc/init.d目录中查找各个服务的启动脚本,而是在/etc/rc.d目录中查找,该目录中包含了代表不同的init启动级别的子目录即rcx.d目录:

Redis启动脚本

rcx.d目录中存放都是/etc/rc.d/init.d目录中脚本的符号链接,以rc3.d为例:

Redis启动脚本

这些符号链接都以
S或
K开头,随后跟一个数字以及脚本所控制的服务名称,如
K05rabbitmq-server,当
init从低运行级别向高运行级别切换时,其按照数字递增的顺序运行所有以
S开头的脚本,
S=start,即启动脚本所控制的服务,按照数字递减的顺序杀死以
K开头的脚本,
K=kill,即杀死脚本所控制的服务。
脚本启动或者杀死的顺序由数字来控制,当然,我们也可以改变这些:

#ln –s /etc/init.d/rabbitmq-server S70rabbitmq-server
或者
#ln –s /etc/init.d/rabbitmq-server K70rabbitmq-server
二、
Redis****启动脚本
有了上面那些理论支撑,接下来就亲自操刀编写一个
Redis启动脚本。
1、创建启动脚本

假设服务名称为
redis-server,可执行文件路径为
/usr/local/bin,配置文件为
redis.conf,配置文件路径为
/etc,进程
ID存放文件为
redis.pid,进程
ID存放文件路径为
/var/run,脚本文件为
redisd,脚本文件存放路径为
/etc/init.d,服务描述为
redis daemon,当然这些信息可以根据自己需要定制,具体脚本如下:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
1#!/bin/sh
2#chkconfig: 345 86 14
3#description: Startup and shutdown script for Redis
4
5PROGDIR=/usr/local/bin
6PROGNAME=redis-server
7DAEMON=$PROGDIR/$PROGNAME
8CONFIG=/etc/redis.conf
9PIDFILE=/var/run/redis.pid
10DESC="redis daemon"
11
12SCRIPTNAME=/etc/init.d/redisd
13
14start()
15{
16         if test -x $DAEMON
17         then
18        echo -e "Starting $DESC: $PROGNAME"
19                   if $DAEMON $CONFIG
20                   then
21                            echo -e "OK"
22                   else
23                            echo -e "failed"
24                   fi
25         else
26                   echo -e "Couldn't find Redis Server ($DAEMON)"
27         fi
28}
29
30stop()
31{
32         if test -e $PIDFILE
33         then
34                   echo -e "Stopping $DESC: $PROGNAME"
35                   if kill `cat $PIDFILE`
36                   then
37                            echo -e "OK"
38                   else
39                            echo -e "failed"
40                   fi
41         else
42                   echo -e "No Redis Server ($DAEMON) running"
43         fi
44}
45
46restart()
47{
48    echo -e "Restarting $DESC: $PROGNAME"
49    stop
50    start
51}
52
53
54list()
55{
56         ps aux | grep $PROGNAME
57}
58
59case $1 in
60         start)
61            start
62        ;;
63         stop)
64            stop
65        ;;
66         restart)
67            restart
68        ;;
69         list)
70            list
71        ;;
72         *)
73            echo "Usage: $SCRIPTNAME {start|stop|restart|list}" >&2
74            exit 1
75        ;;
76esac  
77exit 0  
78

2、增加服务并开机启动


1
2
3
4
5
6
7
8
1#!/bin/sh
2cp ./redisd /etc/rc.d/init.d/redisd
3chmod +x /etc/rc.d/init.d/redisd
4
5chkconfig --add redisd
6chkconfig --level 345 redisd on
7chkconfig --list redisd
8

执行该脚本后,就可以开始
start|stop|restart|list你的服务了。

给TA打赏
共{{data.count}}人
人已打赏
安全技术安全运维

Windows服务器如何发现被黑

2018-5-20 12:24:31

安全技术

详解Node.js API系列C/C++ Addons(1) API文档

2021-12-21 16:36:11

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索