在(四)中我们讲解了memcached服务器的一些启动参数,启动memcached服务器的时候都得进入了memcached服务器的安装目录,找到bin文件夹下的memcached才能完成一次启动,是不是觉得比较麻烦,没关系,小编就给大家介绍更为方便的启动方法——启动脚本。
说起启动脚本,相信使用linux的朋友应该都不会陌生,无视输入命令的文件夹,只需要service 服务名称 start/stop,随时随地 即可开启/关闭一个服务,很方便有没有。相信不少朋友以及迫不及待的想知道如何制作memcached服务器的启动脚本,在此之前,我们需要了解下启动脚本都放在何处。
cd /etc/rc.d/init.d
这个文件夹就是存放我们所有启动脚本的地方,有些朋友查到的资料可能有说是/etc/init.d下,其实两者指向的是同一个文件夹,那就是/etc/rc.d/init.d,就像是我们使用windows的快捷方式一样,在linux下这叫做软链接,我们没必要深究,知道这两个文件夹其实是指向一处即可。我们要制作的启动脚本其实也需要放在此文件夹下,那么如何来制作我们的memcached启动脚本呢?
小编在linux下的造诣十分有限,自然不能独立创建一个启动脚本,但是在这个互联网的世界里面,有什么不会的可以百度呀,我们可以直接搜索memcached启动脚本,网上还是有很多的,我们需要做的只是在/etc/rc.d/init.d下创建一个名为memcached的文件,然后在网上拷贝一段即可,下面附上一段测试后可用的脚本代码。
#!/bin/sh
#
# memcached: MemCached Daemon
#
# chkconfig: - 90 25
# description: MemCached Daemon
#
# Source function library.
. /etc/rc.d/init.d/functions
. /etc/sysconfig/network
start()
{
echo -n $"Starting memcached: "
daemon /usr/local/bin/memcached -u daemon -d -m 1024 -l 127.0.0.1 -p 11211
echo
}
stop()
{
echo -n $"Shutting down memcached: "
killproc memcached
echo
}
[ -f /usr/local/bin/memcached ] || exit 0
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
restart|reload)
stop
start
;;
condrestart)
stop
start
;;
*)
echo $"Usage: $0 {start|stop|restart|reload|condrestart}"
exit 1
esac
exit 0
虽然是拷贝的,但是我们仍然需要改动几处地方才能为我们所用,一个就是memcached的安装路径,文中一共两处,根据自己的情况自行更改,其次就是参数,需要特别说明的一点是-l参数,如果附加了-l参数,那么使用memcached客户端链接memcached服务器的时候一定要是-l后面的参数,否则会链接失败。
除了上述方法外,小编还找到了另外一种办法,安全可靠并且无毒副作用。linux中有一种快速安装软件的方式yum(或者是rpm),yum下安装的软件会自动在/etc/rc.d/init.d生成一个启动脚本,使用yum install memcached自然也不例外,下面是yum生成的memcached服务器启动脚本的具体内容
#! /bin/sh
#
# chkconfig: - 55 45
# description: The memcached daemon is a network memory cache service.
# processname: memcached
# config: /etc/sysconfig/memcached
# pidfile: /var/run/memcached/memcached.pid
# Standard LSB functions
#. /lib/lsb/init-functions
# Source function library.
. /etc/init.d/functions
PORT=11211
USER=memcached
MAXCONN=1024
CACHESIZE=64
OPTIONS=""
if [ -f /etc/sysconfig/memcached ];then
. /etc/sysconfig/memcached
fi
# Check that networking is up.
. /etc/sysconfig/network
if [ "$NETWORKING" = "no" ]
then
exit 0
fi
RETVAL=0
prog="memcached"
pidfile=${PIDFILE-/var/run/memcached/memcached.pid}
lockfile=${LOCKFILE-/var/lock/subsys/memcached}
start () {
echo -n $"Starting $prog: "
# Ensure that /var/run/memcached has proper permissions
if [ "`stat -c %U /var/run/memcached`" != "$USER" ]; then
chown $USER /var/run/memcached
fi
daemon --pidfile ${pidfile} memcached -d -p $PORT -u $USER -m $CACHESIZE -c $MAXCONN -P ${pidfile} $OPTIONS
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch ${lockfile}
}
stop () {
echo -n $"Stopping $prog: "
killproc -p ${pidfile} /usr/bin/memcached
RETVAL=$?
echo
if [ $RETVAL -eq 0 ] ; then
rm -f ${lockfile} ${pidfile}
fi
}
restart () {
stop
start
}
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status -p ${pidfile} memcached
RETVAL=$?
;;
restart|reload|force-reload)
restart
;;
condrestart|try-restart)
[ -f ${lockfile} ] && restart || :
;;
*)
echo $"Usage: $0 {start|stop|status|restart|reload|force-reload|condrestart|try-restart}"
RETVAL=2
;;
esac
exit $RETVAL
相比于上述脚本,这个脚本更为精细,但是同时需要更改的地方也很多,需要注意的一点是,使用yum安装的memcached会自动创建名为memcached用户组和用户,并且在memcached服务器启动脚本中,用户被指定为了memcached,即使你使用yum remove memcached删除了memcached,该用户和用户组并不会随之一起消失,如果你不想要该用户和用户组存在,可以手动进行删除。
其实创建一个启动脚本并没有想象中的复杂,虽然我们不一定会自己手动写个,但是我们可以借鉴不是,网上搜和参考yum的启动脚本都是很不错的方法,至于选择哪种就看你的个人喜好了。
说到这里其实启动脚本的东西已经说完了,说到启动脚本,自然不得不提开机启动项,都是为“方便”而存在,相比于制作一个启动脚本,把制作好的启动脚本加入到开机启动项中是一件在简单不过的事情了
chkconfig --add memcached
chkconfig --level 235 memcached on
两行命令就能搞定,就是如此简单,关于chkconfig参数的用法小编在这里就不详细叙述了,有兴趣的朋友可以自行查找资料。
注意事项:
1./etc/init.d是/etc/rc.d/init.d的软链接,类似于windows下的快捷方式,其实它们的指向是相同的地方。
2.如果使用yum安装memcached服务器,系统可能会自动创建名为memcached用户组和用户,即使你使用yum remove命令删除了memcached服务器,但是该用户组和用户并不会随之删除,如果不需要,可以自行手动删除。
3.把一个服务加入到开机启动项的前提条件是/etc/rc.d/init.d下存在该服务的启动脚本