Linux中将Memcached注册为系统服务

memcached是优秀的开源高性能分布式内存对象缓存系统。在Linux系统下编译安装后没有自动注册为系统服务。另外由于memcached基于libevent库,该库默认的编译安装位置为/usr/local/lib目录,该目录又不是多数linux发行版的默认库加载路径。因此在执行memcached之前需要修改默认加载路径,将该路径包含进去。虽然只需要设置一次但毕竟要设置,很麻烦。如果你又希望存放在该路径下的库不被程序自动搜寻到,就不能使用该方法。那么怎么才能有个完全的方法来解决呢?

解决方法:

既然memcached没有被注册为系统服务,那我们手动地去注册。注册系统服务需要编写启动脚本,一般要实现三个方法,分别是:start、stop和restart。并且该脚本要放置在/etc/init.d/目录中。下面是我写的服务脚本(脚本需要以root权限编写):

#chkconfig: 345 60 60    #description: This Service is from memcached \    # which is high performance object cache system    #!/bin/sh    export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH   memcached_process_name="memcached"   start(){     echo "Starting Memcached Service with Port 11211"     # note that the character ` is not single quotation, \      # It is the left character of "1" key in your keyboard      memcached_pid_list=`pidof $memcached_process_name`     if test -n "$memcached_pid_list"     then       echo "Fail To Launch Memcached, Since It Has Already Started"       exit 1     else       echo "Launching memcached with MaxMemory 64MB"       /usr/local/bin/memcached -l 0.0.0.0 -p 11211 -m 64 -d -u root       echo "Launch Memcached Successfully"       exit 0     fi;   }      stop(){     echo "Stopping Memcached Service..."     memcached_pid_list=`pidof $memcached_process_name`     if test -n "$memcached_pid_list"     then       echo "Find Memcached Process(es), Start To End Them"       kill -9 $memcached_pid_list       if test "$?" = "0"       then         echo "Success to Terminate All Memcached Processes"       else         echo "Can Not Terminate All Memcached Processes"       fi;       echo {1}quot;Finished Stopping Memcached Service"       exit 0     else       echo "Can Not Find Any Memcached Process, Fail To Stop Service"       exit 1     fi;   }         case "$1" in     start)        start        ;;     stop)        stop        ;;     restart)        stop        #sleep 3 seconds to wait for process's exit         sleep 3        start        ;;     *)        echo {1}quot;Usage:$0 {start|stop|restart}"        exit 2   esac  

编写完毕后。对其赋予755权限,即rwxr-xr-x(文件所有者具有读写执行权限,同组用户具有只读和执行权限,其他用户具有只读和执行权限):

[root@lxp2 init.d]# chmod 755 memcached  

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/ppzzw.html